元组
Python 的元组与列表类似,不同之处在于元组的元素不能修改。 元组中的元素类似于列表,可以是不同的类型。
元组的定义
()定义
使用圆括号定义,元素之间用逗号隔开。 元组定义如果只有一个元素,需要在元素后面加逗号。 也可以没有()
tp1 = ( 1 , )
tp1 = ( 1 , 2 , [ 1 , 2 , 3 ] )
tp1 = ( )
tp1 = ( 1 )
tp1 = 1 , 2 , 3
tuple定义
tuple()定义空元组。 tuple(iterable=())将可迭代的对象转换为元组。
元组的访问
同列表的访问方法,索引和切片方式访问。 元组中的元素无法改变。
tp1 = ( 1 , 2 , 3 ) ; tp[ 1 ] = 5
list1= [ 1 , 2 , 3 ] ; list1= [ 5 ]
tp1 = ( 1 , 2 , 3 , 4 , 5 ) ; pritn( tp[ : 4 ] )
修改的元组
元组拼接组合
tp1= ( 1 , 2 , 3 ) ; tp2= ( 4 , 5 , 6 ) ; tp1 + tp2
元组删除
元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组
元组相关方法和系统函数
方法 描述 举例 tuple.count 返回某个元素的数目 tp1=(1,2,3,4,2); tp1.count(2) => 2 tuple.index(value, start, stop) 返回 元素所在的index len(tuple) 返回tuple的元素数目 tp1=(1,2,3,4,2); len(tp1) => 5 min(tuple),max(tuple) 返回tuple中的最大最小值 sum(tuple) 元组中元素的和 a=(1,2,3); sum(a) => 6 sorted(tuple) 元组排序, 返回列表
元组运算符
方法 描述 举例 + 并上另一个元组 (1,2,3)+(4,5,6) => (1, 2, 3, 4, 5, 6) * 复制元组元素添加至原元组后面 (3,)*5 => (3,3,3,3,3) in, not in 判断一个元素是否在元组中 3 in(1,3) =>True is is not 判断两个元组是否引用同一块空间 a=(1,), b=(2,), a is not b => False
元组的应用
打包和解包
把多个用逗号分隔的值赋给一个变量时,多个值会打包成一个元组类型。 把一个元组赋值给多个变量时,元组会解包成多个值然后分别赋给对应的变量。 如果在解包时,元素的个数和变量的个数不一致,就引起错误。
tp1 = "dog" , "cat" , "duck" , "chick"
result:
( 'dog' , 'cat' , 'duck' , 'chick' )
a, b, c, d = tp1; print ( a, b, c, d)
result:
dog cat duck chick
a, b = tp1
result:ValueError
解决变量少于元组个数这个错误的方法是使用*,*变量可以接收多个值,就将多个元素变成了一个列表,这个通配符只能出现一次。 *y = 1,2,3,拿着一些散列的元素,就会把散列元素装到列表里面。 非赋值时,已经装好的包前面加*,系统就会拆包成散列。
tp1 = "dog" , "cat" , "duck" , "chick" ; a, * b = tp1
print ( a, b)
print ( a, * b)
result:
dog [ 'cat' , 'duck' , 'chick' ]
dog cat duck chick
交换两个变量的值
函数返回多个值
如果return语句中有两个值,这两个值会组装成一个二元组然后返回。 调用定义的函数会得到这个二元组,也可以通过解包语法将二元组中的两个值分别赋给两个变量。