导读:
1.元组
元组(tuple)与列表类似,不同之处在于元组的元素不能修改。元组写在小括号里,元素之间用逗号隔开。元组中的元素类型也可以不相同:
>>> a = (1991, 2014, 'physics', 'math') >>> print(a, type(a), len(a)) (1991, 2014, 'physics', 'math') <class 'tuple'> 4
创建空元组:
info_tuple = ()
元组中只包含一个元素时,需要在元素后面添加逗号:
info_tuple = (50, )
与字符串类似,元组可以被索引且下标索引从0开始,也可以进行截取/切片。其实,可以把字符串看作一种特殊的元组。
>>> tup = (1, 2, 3, 4, 5, 6) >>> print(tup[0], tup[1:5]) 1 (2, 3, 4, 5) >>> tup[0] = 11 # 修改元组元素的操作是非法的
虽然tuple的元素不可改变,但它可以包含可变的对象,比如list列表。
>>>a=(1,2,3,[1,2,['a','b','c']]) >>>a[3][2][1] 'b' >>>a[3][2]='4' >>>print(a) (1,2,3,[1,2,'4']) >>>a[2]='3' 报错 >>>t = 1, 2, 3 >>>t (1, 2, 3) >>>t2 = ('a',) + t[1:] >>>t2 ('a', 2, 3) >>>(1,2) is (1,2) False
元组作为返回值:
>>> def swap(x, y): x, y = y, x >>> a = 1 >>> b = 2 >>> swap(a, b) >>> print a, b 1 2
并没有交换, 因为x和a是同一个值的别名, 在函数swap中改变x的值后, x和a就彻底没有任何关系了。 所以x的改变不能影响变量a。
在Python中如果变量具有相同的值, 就可以认为这些变量是同一个值的别名。 也就是这些变量指向同一个值。 这样做的好处也许是节省了内存空间。 但是如果某一个变量改变了它自己的值, 那么解释器就开辟出新内存空间存储这个变量的值。 这个变量就指向新的值。
元组的内置函数count, index
index和count与字符串和列表中的用法相同。
>>> a = ('a', 'b', 'c', 'a', 'b') >>> a.index('a', 1, 3) # 注意是左闭右开区间 Traceback (most recent call last): File "", line 1, in ValueError: tuple.index(x): x not in tuple >>> a.index('a', 1, 4) 3 >>> a.count('b') 2 >>> a.count('d') 0
另外,元组也支持用+操作符:
>>> tup1, tup2 = (1, 2, 3), (4, 5, 6) >>> print(tup1+tup2) (1, 2, 3, 4, 5, 6)
元组遍历
# for 循环内部使用的变量 in 元组
for item in info:
循环内部针对元组元素进行操作
print(item)
在 Python 中,可以使用 for 循环遍历所有非数字型类型的变量:列表、元组、字典 以及 字符串。
应用场景
尽管可以使用for in遍历元组,但是在开发中,除非 能够确认元组中的数据类型,否则针对元组的循环遍历需求并不是很多。更多的应用场景是:
1.函数的 参数 和 返回值,一个函数可以接收 任意多个参数,或者 一次返回多个数据;
2.格式字符串,格式化字符串后面的 () 本质上就是一个元组;
3.让列表不可以被修改,以保护数据安全。
info = ("zhangsan", 18)
print("%s 的年龄是 %d" % info)
要点:
1、与字符串一样,元组的元素不能修改。
2、元组也可以被索引和切片,方法一样。
3、注意构造包含0或1个元素的元组的特殊语法规则。
4、元组也可以使用+操作符进行拼接。
5、通常,元组中保存的数据类型是不同的。
6、string、list和tuple都属于sequence(序列)。