元组对象(tuple),像一个不可改变的列表。元组是序列,但是具有不可变性,和字符串类似。
语法上,它被编写在圆括号()中而不是方括号[]中,它们支持任何类型、任意嵌套以及常见的序列操作。
元组的特点:
任意对象的有序集合
与字符串 和列表类似,元组是一个基于位置的有序对象集合。与列表相同,它们可以嵌进任何类型的对象。
通过偏移量存取
同字符串、列表一样,元组中的元素通过偏移量来访问,例如索引和分片。
属于“不可变序列”
元组不支持适用于列表的任何原位置修改操作。
固定长度、多样性、任意嵌套
因不可变性,如不创造一个新的副本,就不能增长或缩短元组。
常见元组字面量和运算
| 运算 | 解释 |
|---|---|
| () | 空元组 |
| A = (0,) | 单个元素的元组 |
| A = (0, 'Ni', 1.2, 3) | 四个元素的元组 |
| A = 0, 'Ni', 1.2, 3 | 与上相同 |
| A = ('bob', ('dev', 'mgr')) | 嵌套元组 |
| A = tuple('spam') | 一个可迭代对象的元素组成的元组 |
| A[i] | 索引 |
| A[i][j] | 索引的索引 |
| A[i:j] | 分片 |
| len(A) | 长度 |
| A1 + A2 | 拼接 |
| A*2 | 重复 |
| for x in A: print(x) | 迭代 |
| "spam" in A | 成员关系 |
| [x ** 2 for x in A] | 列表推导 |
| A.index('he') | search()方法 |
| A.count('he') | count()方法 |
元组的实际应用
T = (1,2,3,4)
len(T)
# 4
T + (5,6)
# (1,2,3,4,5,6)
T[0]
# 1
元组两个专有的可调用方法
T.index(4)
# 3
T.count(4)
# 1
元组的真正特殊之处在于一旦创建就不能改变,只含一个元素的元组需要一个逗号作为结尾。
T[0] = 2
...error text omitted...
TypeError:'tuuple' object does not support item assignment
T = (2,) + t[1:]
T
(2,2,3,4)
与列表和字典一样,元组支持混合的类型和嵌套,但是不能增长或缩短,因为他们是不可改变的:
T = 'spam', 3.0, [11,22,33]
T[1]
3.0
T[2][1]
22
T.append(4)
AttributeError: 'Tuple' object has no attribute 'append'
(1, 2) + (3, 4)
#(1, 2, 3, 4))
(1, 2)* 3
#(1, 2, 1, 2, 1, 2)
A = (1, 2, 3, 4)
A[0], A[1:3]
#(1, (2, 3))
当“+” “*” 以及分片操作应用于元组时,返回新的元组对象。
append调用在元组中不可用
元组排序:先将它转换为列表从而使其成为一个可变对象,才能使用排序方法调用。
A = ('cc', 'aa', 'dd', 'bb')
tmp = list(A)
tmp.sort()
tmp
#['aa', 'bb', 'cc', 'dd']
A = tuple(tmp)
A
#('aa', 'bb', 'cc', 'dd')
sorted(A)
#('aa', 'bb', 'cc', 'dd')
#
list将对象转换成列表
tuple将对象转换成元组
注意:元组的不可变性只使用于元组本身顶层,而非其内容。
A = (1, [2, 3], 4)
A[1] = 'spam'
#TypeError: object doesn't support item assignment
A[1][0] = 'spam'
A
#(1, ['spam', 3], 4)
为什么有了列表还要元组?
最佳答案是元组的不可变性提供了某种一致性。这样可以确保元组在程序中不会被另一个引用修改,而列表就没有这样的保证。
元组对象基本就像一个不可以改变的列表。就像列表一样,元组是序列,但是它具有不可变性,和字符串类似。语法上,元组被编写在圆括号中而不是方括号中(圆括号可以省略),它们支持任意类型、任意嵌套以及常见的序列操作。
T = (1,2,3,4)
len(T)
# 4
T + (5,6)
# (1,2,3,4,5,6)
T[0]
# 1
元组两个专有的可调用方法
T.index(4)
# 3
T.count(4)
# 1
元组的真正特殊之处在于一旦创建就不能改变,只含一个元素的元组需要一个逗号作为结尾。
T[0] = 2
...error text omitted...
TypeError:'tuuple' object does not support item assignment
T = (2,) + t[1:]
T
(2,2,3,4)
与列表和字典一样,元组支持混合的类型和嵌套,但是不能增长或缩短,因为他们是不可改变的:
T = 'spam', 3.0, [11,22,33]
T[1]
3.0
T[2][1]
22
T.append(4)
AttributeError: 'Tuple' object has no attribute 'append'
元组是Python中的不可变序列,类似于不可变的列表。它支持序列操作,如通过偏移量存取,但不支持原位置修改。元组可任意嵌套,但一旦创建就不能增长或缩短。尽管列表更灵活,但元组的不可变性提供了一致性,确保其内容不会被意外修改。元组的创建需注意单元素元组需尾随逗号。元组虽不可变,但支持通过“+”、“*”及分片创建新元组。在需要不变性或优化性能时,元组是理想选择。
152

被折叠的 条评论
为什么被折叠?



