• Tuple是不可更改的类型,一旦初始化就不能修改。
1
2
3
4
5
6
7
8
9
>>>t = (1,2,3)
>>>t[0]
1
>>>t[0] = 0
Traceback (most recent call last):
File "<pyshell#19>", line 1, in <module>
t[0] = 0
TypeError: 'tuple' object does not support item assignment
# 体现元组的不变性,可用于保护数据

声明

1
2
mytuple = (a1,a2,a3,...) 
mytuple1 = () # 空元组

定义只有一个元素的元组

  • 因为括号()既可以表示tuple,又可以表示数学公式中的小括号,这就产生了歧义,Python规定,这种情况下,按小括号进行计算,计算结果自然是1。所以,只有1个元素的tuple定义时必须加一个逗号,,来消除歧义
1
2
3
4
5
6
>>>t = (1)  # 定义的是数字1
>>>t
1
>>>t = (1,) # 定义的是1个元素的元组
>>>t
(1,)

列表元组

  • 列表元组看起来是“可变的”,实际上元组的内容并没有变化,而是其内容指向的列表发生了变化。
1
2
3
4
5
6
# 包含列表元素的数组似乎是“可变的”
>>> t = (1,2,["a","b"])
>>> t[2][0] = 1
>>> t[2][1] = 2
>>> t
(1, 2, [1, 2])
  • 实际上元组中并没有储存列表,而是列表的地址,而列表始终是那个列表,其指向并没有变化,元组还是不变的

  • 修改前:

  • 修改后: