元组:
元组对象(tuple),是一个不可改变的序列(提供了完整性的约束)。圆括号为操作符,支持任意类型、任意嵌套以及常见的序列操作。
元组操作
>>> T = (1,2,3,4) # 创建一个元组
>>> len(T) # 获取元组长度
4
>>> T[2] # 获取指定的项
3
>>> T.index(3) # 获取元组中某项的索引
2
>>> T.count(4) # 获取元组中某项的个数,可以检查元组中是否包含某项
1
>>> T[1:3] # 分片(slice)操作,生成一个新的元组
(2, 3)
元组运算符:+ *
>>> T = (1,2,3,4)
>>> T + (5,6) # 元组连接操作
(1,2,3,4,5,6)
>>> T * 2
(1, 2, 3, 4, 1, 2, 3, 4)
元组内置函数:
1. len(tuple):计算元组元素个数。
2. max(tuple):返回元组中元素最大值。
3. min(tuple):返回元组中元素最小值。
4. tuple(seq):将列表转换为元组。
>>> l = [1,3,5]
>>> l
[1, 3, 5]
>>> tuple(l)
(1, 3, 5)
元组创建
1. 创建一个空元组:
>>> t1 = ()
2. 当元组中只包含一个元素时,需要在元素后面添加逗号来消除歧义:
>>> t1 = (10,)
>>> t1
(10,)
不加逗号的话,就不是创建元组了,而是一个数字:
>>> t1 = (10)
>>> t1
10
3. 元组支持混合类型和嵌套:
>>> T = (‘abc’, 2.0, [3, 4, 5])
>>> T[2]
[3, 4, 5]
>>> T[2][1]
4. 创建元组时还可以省略圆括号(任意无符号的对象,以逗号隔开,默认为元组)
>>> t1 = 1, 2, 3, 4, 5
>>> t2 = 'a', 'b', 'c', 'd'
5. 动态创建元组:
当需要根据不定的元素个数来创建元组时,可利用元组的合并功能来创建动态元组。
如下,使用以下t和l的所有元素(元素个数不定)作为一个元组:
>>> t = (1, 2, 3, 4, ...)
>>> l = ['a', 'b', 'c', 'd', ...]
>>> new_t = ()
>>> for i in t:
new_t += (i,)
>>> for i in l:
new_t += (i,)
>>> new_t
(1, 2, 3, 4, ..., 'a', 'b', 'c', 'd', ...)
元组合并
元组中的元素是不允许修改的,但是可以对元组进行连接组合:
>>> t1 = (12, 34, 56)
>>> t2 = ('abc', 'xyz')
>>> t3 = t1 + t2
>>> t3
(12, 34, 56, 'abc', 'xyz')
删除元组
元组中的元素是不允许删除的,但是可以使用del语句删除整个元组:
>>> del t3
>>> t3
NameError: name 't3' is not defined
“可变”的元组元素
>>> t = (1, 2, 3, ['a', 'b', 'c'])
>>> t[3][0] = 'x'
>>> t[3][1] = 'y'
>>> t[3][2] = 'z'
>>> t
(1, 2, 3, ['x', 'y', 'z'])
表面上看,tuple的元素确实变了,但其实变的不是tuple的元素,而是list的元素。tuple开始指向的list并没有改成别的list,只是list的元素改变了,所以,“不变”是指tuple的每个元素指向永远不变。