1. 程式人生 > >【Python學習筆記】python元組

【Python學習筆記】python元組

python的元組(tuple)和列表(list)類似,是一個有序的列表,區別在於tuple是不能修改的,其初始化方式如下:

>>> classmates = ('Michael', 'Bob', 'Tracy')

現在,classmates這個tuple不能變了,它也沒有append()insert()這樣的方法。其他獲取元素的方法和list是一樣的,你可以正常地使用classmates[0]classmates[-1],但不能賦值成另外的元素。
不可變的tuple有什麼意義?因為tuple不可變,所以程式碼更安全。如果可能,能用tuple代替list就儘量用tuple。
空tuple可以這麼定義:

>>> t = ()
>>> t
()

要定義一個只有1個元素的tuple,如果你這麼定義:

>>> t = (1)
>>> t
1

定義的不是tuple,是1這個數!這是因為括號()既可以表示tuple,又可以表示數學公式中的小括號,這就產生了歧義,因此,Python規定,這種情況下,按小括號進行計算,計算結果自然是1

所以,只有1個元素的tuple定義時必須加一個逗號,,來消除歧義:

>>> t = (1,)
>>> t
(1,)

Python在顯示只有1

個元素的tuple時,也會加一個逗號,,以免你誤解成數學計算意義上的括號。
tuple的定義還可以不用加括號,譬如如下:

>>> t='hello',
>>> len(t)
1
>>> t
('hello',)
>>> l='hello','word','aaa'
>>> len(l)
3
>>> l
('hello', 'word', 'aaa')

tuple內部是可以包含tuple或者其他譬如list等,不同在於如內含list,則這個list是可以被改變的;

>>
> t = ('a', 'b', ['A', 'B']) >>> t[2][0] = 'X' >>> t[2][1] = 'Y' >>> t ('a', 'b', ['X', 'Y'])

原因在於在元組中,每個元素都有一個地址,而這個列表也是指向的一個地址,改變元素只是改變內容,但是元組t指定的列表的地址並未改變,如下所示:
改之前:
之前
改之後:
改之後

參考資料:

https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014316724772904521142196b74a3f8abf93d8e97c6ee6000
http://www.runoob.com/manual/pythontutorial/docs/html/datastructures.html#tut-tuples