2016年9月20日 星期二

【Mac/Python3】基礎入門(4) - list 和 tuple

list (列表):

是一種有序的集合,可隨時增加或刪減其中的元素
就像 Array 一樣

假如現在我們想列出班裡同學的名字
>>> classmates = [‘Amy’,’Bob’,’Cathy’] 
>>> print(classmates) 
[‘Amy’,Bob,’Cathy’]
然後我們想知道有多少個同學, 用 len() 就可以知道 list 有多大
>>> a = len(classmates) 
>>> print(a) 
3
如果我們想知道最後一位同學的名字
首先我們要用 a = len() -1 知道 index 是什麼
( -1 的原因是 list 的 index 數是由0開始的,所以 Amy 是 index 0)
>>> print(classmates[a]) 
Cathy
更簡單的方法是
>>> print(classmates[-1]) 
Cathy
倒數第二的就是
>>> print(classmates[-2]) 
Bob
諸此類推

拿出 index 1 的同學名字
>>> print(classmates[1]) 
Bob
*要注意 index 不要越界
*例如:>>> print(classmates[3]
*可是我們根本沒有 index 3
*這時候會出現 IndexError: list index out of range

list 是一個可變的有序表,所以是可以增加元素進去的
例如使用 append() 增加到最尾
>>> classmates.append(‘Peter’) 
>>> print(classmates) 
[‘Amy’,’Bob’,’Cathy’,’Peter’]
又或是使用 insert() 增加到指定位置,例如 index 1
>>> classmates.insert(1,‘Jack’) 
>>> print(classmates) 
[‘Amy’,’Jack’,’Bob’,’Cathy’,’Peter’]
可以增加元素,自然也可以刪減,使用 pop () 來刪減最尾的元素
>>> classmates.pop() 
>>> print(classmates) 
[‘Amy’,’Jack’,’Bob’,’Cathy’]
刪減指定元素,使用 pop(i)
>>> classmates.pop(1) 
>>> print(classmates) 
[‘Amy’,’Bob’,’Cathy’]
更改某index為別的元素
>>> classmates[1] = ‘Mary’ 
>>> print(classmates) 
[‘Amy’,’Mary’,’Cathy’]
list 中不一定只放 string 的,可以放不同的類型
當然在裡面也可以放 list 嚕
>>> assoList = [‘a’,’b’,[‘c’,’d’],’e’]
然後如果想拿list中list的值
>>> print(assoList[2][0] 
c


tuple (元組):

tuple 跟 list 很相似,也是類似 array 的,唯一不同的是
tuple 一但初始化了就不能被修改
list 是用 []
tuple 是用 ()
>>> classmates(‘Amy’,’Bob’,’Cathy’)
現在 classmates 這個 tuple 不能變了
假如我們嘗試 
>>> classmates[0] = ‘test’
他會報錯顯示
TypeError: ‘tuple’ object does not support item assignment
意思是 tuple 不能被修改的
這樣有個好處
就是比較安全
所以如果能用tuple代替list就盡量用tuple好了

*要注意的是,使用 tuple 時,要在初始化時就把全部元素確定下來
*因為他不能被修改,不會有 append(), insert() 這些方法的

定義一個空的tuple時,可以使用 ()
>>> a = ()
定義一個只有一個元素的 tuple 時,如果你這樣定義
>>> b = (1)
這樣我們不是在定義 tuple,而是在定義 1 這個數字
因為 () 除了表示 tuple 外,亦表示數學公式中的小括號
所以如果我們定義只有一個元素的 tuple 時
後面一定要加上逗號
>>> b = (1,)
這樣 python 就會知道這是 tuple 了

最後來一個看起來”可變的”tuple
假如我們在tuple裡放入list
>>> c = (‘a’,’b’,[‘x’,’y’]) 
>>> c[2][0] = ‘c’ 
>>> print(c) 
(‘a’,’b’,[‘c’,’y’])
這個tuple裡定義了的是 a, b, 和一個 list
為什麼我們可以修改到?
因為我們只是修改了 list 裡面的元素

tuple 的元素是沒變的,還是 a, b, 和一個 list



沒有留言:

張貼留言