小結
list和tuple是Python內置的有序集合,一個可變,一個不可變。根據需要來選擇使用它們。
list
Python內置的一種數據類型是列表:list。list是一種有序的集合,可以隨時添加和刪除其中的元素。
比如,列出班裏所有同學的名字,就可以用一個list表示:
classmates = [‘Michael’, ‘Bob’, ‘Tracy’]
classmates
[‘Michael’, ‘Bob’, ‘Tracy’]
變量classmates就是一個list。用len()函數可以獲得list元素的個數:
len(classmates)
3
tuple
另一種有序列表叫元組:tuple。tuple和list非常類似,但是tuple一旦初始化就不能修改,比如同樣是列出同學的名字:
classmates = (‘Michael’, ‘Bob’, ‘Tracy’)
現在,classmates這個tuple不能變了,它也沒有append(),insert()這樣的方法。其他獲取元素的方法和list是一樣的,你可以正常地使用classmates[0],classmates[-1],但不能賦值成另外的元素。
不可變的tuple有什麼意義?因爲tuple不可變,所以代碼更安全。如果可能,能用tuple代替list就儘量用tuple。
tuple的陷阱:當你定義一個tuple時,在定義的時候,tuple的元素就必須被確定下來,比如:
t = (1, 2)
t
(1, 2)
如果要定義一個空的tuple,可以寫成():
t = ()
t
()
但是,要定義一個只有1個元素的tuple,如果你這麼定義:
t = (1)
t
1
定義的不是tuple,是1這個數!這是因爲括號()既可以表示tuple,又可以表示數學公式中的小括號,這就產生了歧義,因此,Python規定,這種情況下,按小括號進行計算,計算結果自然是1。
所以,只有1個元素的tuple定義時必須加一個逗號,,來消除歧義: