1. 程式人生 > 實用技巧 >【PY從0到1】第三節 列表

【PY從0到1】第三節 列表

# 3 列表

# 1> 下面這就是一個列表
aabbccdd = ['ee','ff','gg']
# 列表可以儲存資料,包含其中元素可以有很多,是可修改、有次序的。
# 下面展示一下兩套索引。
#              0     1    2
# aabbccdd = ['ee','ff','gg']
#              -3   -2   -1
# 可以用兩種方式抽取列表的元素,如下。
h = aabbccdd[0]
print(h)
i = aabbccdd[-2]
print(i)
# 對應的輸出結果如下
# ee
# ff
# 強調一點,索引從0開始。

# 2> 修改、新增和刪除列表中的元素
# 修改可以用下列語句,通俗的講應該叫替換。 aabbccdd[0] = 'kk' print(aabbccdd) # 輸出結果為:['kk', 'ff', 'gg'] # 新增元素可以使用下面的方法,預設新增到列表的最後一位。 aabbccdd.append('uu') print(aabbccdd) # 輸出結果為:['kk', 'ff', 'gg', 'uu'] # 習慣上,會先建立一個空列表。然後再用append()新增元素。 # 也可以使用方法insert()將元素插入到指定位置,具體如下。 aabbccdd.insert(1,'pp') print(aabbccdd) # 輸出結果為:['kk', 'pp', 'ff', 'gg', 'uu']
# 如果知道元素的索引,可以直接用del 刪除對應元素 del aabbccdd[0] print(aabbccdd) # 輸出結果為:['pp', 'ff', 'gg', 'uu'] # 使用pop()刪除元素,通俗講是叫提取。預設提取最後一個元素。 popped_aabbccdd = aabbccdd.pop(1) print(aabbccdd) print(popped_aabbccdd) # 輸出結果為: # ['pp', 'gg', 'uu'] # ff # 如果知道元素名稱,可以用remove()直接刪除。 # remove()不具有提取功能。 # 如果列表中有重複的元素,方法remove()只刪除索引較小的那一個。
# 如果列表中有重複的元素就需要用if迴圈解決。 aabbccdd.append('gg') print(aabbccdd) aaccddee = aabbccdd.remove('gg') print(aabbccdd) print(aaccddee) # 對應的結果如下: # ['pp', 'gg', 'uu', 'gg'] # ['pp', 'uu', 'gg'] # None # 3> 列表排序 # 用方法sort()對列表進行排序,可以永久改變列表順序。 aabbccdd.sort() print(aabbccdd) # 輸出結果為:['gg', 'pp', 'uu'] # 傳入reverse = True,可以相反順序排序。 aabbccdd.sort(reverse = True) print(aabbccdd) # 輸出結果為:['uu', 'pp', 'gg'] # 直接將列表傳入sorted()可以臨時改變列表排序,也同樣適用於方法reverse,語句如下。 # print(sorted(aabbccdd,reverse = True)) # 方法reverse()可以倒著列印列表,但可以隨時恢復到原來的順序,只需要再呼叫這個方法即可。 aabbccdd.reverse() print(aabbccdd) # 對應結果如下:['gg', 'pp', 'uu'] # 4> 確定列表長度 # 使用方法len()可以確定列表長度。 print(len(aabbccdd)) # 輸出結果為:3 # 5> 遍歷列表 # 下面重新定義一個新的列表 abc = ['a','b','c','d','e'] for cc in abc: print(cc) # 簡單兩行程式碼就可以實現遍歷的功能,結果如下 # a # b # c # d # e # 使用for時要注意後面有個冒號,如,for cc in abc:<---- # 6> 使用函式range()建立數值列表 # 可以使用list()和range()配合直接生成數值列表 numbers = list(range(1,10)) print(numbers) # 注意,使用range()生成的數字是有頭無尾的,所以上述程式碼的結果如下。 # [1, 2, 3, 4, 5, 6, 7, 8, 9] # 7> 對數字列表的簡單統計 # 使用方法max()、min()、sum()對列表秋最大值,最小值和總和 print(min(numbers)) print(max(numbers)) print(sum(numbers)) # 結果如下。 # 1 # 9 # 45 # 8> 列表切片 # 切片就是說提取列表的一部分,且不改變原列表。 # 基本形式是:[起始索引:終止索引],也遵循有頭無尾原則。 # 舉例如下。 print(numbers[:]) #又叫複製列表 print(numbers[2:8]) print(numbers[:8]) print(numbers[:-1]) print(numbers[2:]) # 結果如下 # [1, 2, 3, 4, 5, 6, 7, 8, 9] # [3, 4, 5, 6, 7, 8] # [1, 2, 3, 4, 5, 6, 7, 8] # [1, 2, 3, 4, 5, 6, 7, 8] # [3, 4, 5, 6, 7, 8, 9] # 請讀者自行對比這五種切片的異同。 # 9> 元組 # 他是一種特殊的列表,規則限定其中的元素無法被改變,只能被再次賦值。 # 元組是用()表達 yuanzu1 = ('s','ss','sss') yuanzu1['s'] = 'ssss' # 這時,Python就會報錯,如下。 # TypeError: 'tuple' object does not support item assignment # 可以看到元組裡的元素確實不能被修改。 # 但是對其做賦值操作是可以的。 yuanzu1 = ('s','ss','sss') yuanzu1 = ('ssssss') print(yuanzu1) # 結果為:ssssss