最近把python的基础语法复习一下,发现tuple这个比较特殊,有几点须要注意下python
1.tuple的每一个元素值不能改变,如:code
>>> 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只管每一个元素的值不改变hash
>>> b=[1,2] >>> a=(b,3) >>> id(b) 4454662368 >>> id(a) 4454507512 >>> id(a[0]) 4454662368
如上,当我再修改b的时候,a里面看到的是修改后的值it
>>> b[0]=8 >>> a ([8, 2], 3)
可是我给b从新复制的话,b已是指向了新的地址ast
>>> b=[4,5] >>> id(b) 4454500256 >>> id(a[0]) 4454662368 >>> a ([8, 2], 3)
对b的修改固然不会影响到a。基础
3.tuple能够用做dict的key,由于它是不可变的。可是tuple做为dict的key时有个限制——tuple的元素是能够哈希的。
通常是这样用的:module
>>> c=(4,6) >>> d={c:'adf'}
可是你不能这样用:object
>>> l=[5,4] >>> c=('dfdf',l) >>> d={c:'adf'} Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unhashable type: 'list'