最近把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'