最近把python的基础语法复习一下,发现tuple这个比较特殊,有几点需要注意下

1.tuple的每个元素值不能改变,如:

>>> a=(1,2)
>>> a[0]=3;
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> 

2.tuple的元素是list的时候,tuple是管不着list的,tuple只管每个元素的值不改变

>>> b=[1,2]
>>> a=(b,3)
>>> id(b)
4454662368
>>> id(a)
4454507512
>>> id(a[0])
4454662368

如上,当我再修改b的时候,a里面看到的是修改后的值

>>> b[0]=8
>>> a
([8, 2], 3)

但是我给b重新复制的话,b已经是指向了新的地址

>>> b=[4,5]
>>> id(b)
4454500256
>>> id(a[0])
4454662368
>>> a
([8, 2], 3)

对b的修改当然不会影响到a。

3.tuple可以用作dict的key,因为它是不可变的。但是tuple作为dict的key时有个限制——tuple的元素是可以哈希的。
一般是这样用的:

>>> c=(4,6)
>>> d={c:'adf'}

但是你不能这样用:

>>> l=[5,4]
>>> c=('dfdf',l)
>>> d={c:'adf'}
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'

yoop
10 声望2 粉丝

我要/一步一步往上爬