大家應該都聽說過Python有很豐富的函式庫吧!
沒錯,以列表來說就有高達10多個。
專屬於列表的函式,我們稱為列表的「方法」
今天就介紹幾個常用的函式與方法吧!
max(list)
:回傳列表中最大的數值
數字
或字串
min(list)
:回傳列表中最小的數值
數字
或字串
sum(list)
:回傳列表中所有數值的加總
數字
舉例說明:
a = [1,2,3,5,9,4] # create a list
print(max(a)) # 9
print(min(a)) # 1
print(sum(a)) # 24
list.append(obj)
:將obj新增在列表最後面
list.insert(idx, obj)
:將obj
新增在列表於索引值idx
的位置
idx
的元素會被向後移a = [1,2,3]
a.insert(2000, 50) # 新增在列表最末
a.insert(-2000, 60) # 新增在列表最前
list.remove(obj)
:將列表中,第一個出現的obj
移除
ValueError: list.remove(x): x not in list
)list.pop(idx)
:將索引值idx
的元素移除
idx
的元素會被向前移idx
為不合法的索引值,會給出錯誤訊息(IndexError: pop index out of range
)list.clear()
:將列表清空
list.sort()
:將列表小到大排序
key
, reverse
,有興趣者可以自行查閱list.index(obj)
:回傳obj的索引值
ValueError: obj is not in list
)list.count(obj)
:回傳obj的數量list.copy()
:回傳相同的列表列表提供兩種運算子 +
, *
列表加法:list1 + list2
list_a = [1,2,3]
list_b = ['a','b','c']
print(list_a + list_b) # [1, 2, 3, 'a','b','c']
列表乘法:list1 * n
list_a = [1,2,3]
print(list_a * 3) # [1, 2, 3, 1, 2, 3, 1, 2, 3]
複製列表這個題目,你的直覺是怎麼解決?
一般人會這樣做:
list1 = [1,2,3]
list2 = list1
print(list1)
print(list2)
以結果來看,這兩個輸出確實相等
讓我們試著改變list2
list1 = [1,2,3]
list2 = list1
list2.append(200)
print(list1)
print(list2)
結果,兩個列表被同步改變了?!
為什麼?
因為這兩個變數指向的是同一個列表(同一塊記憶體)。
證明一下:
list1 = [1,2,3]
list2 = list1
print(id(list1))
print(id(list2))
註:id(obj)
把它想成是obj在電腦裡面的地址
從輸出看來,這兩個列表確實是同一個
回歸問題,要怎麼複製列表?list2 = list1.copy()
取得子列表的最佳途徑!
list1[0]
取的是一個元素。
使用 Slice list1[1:]
取的是很多個元素。
Slice 的語法是 list[start : end : step]
參數的使用與
range(start, end, step)
極為相似
回傳一個列表
舉一些例子:
list1 = [0,1,2,3,4,5,6,7]
print(list1[3:6]) # [3,4,5]
print(list1[1:7:2]) # [1,3,5]
特殊用法:
list2 = list1[:]
list1 = list1[::-1]
範例:
list1 = [0,1,2,3,4,5,6,7]
list2 = list1[:]
print(id(list1), id(list2))
list3 = list1[::-1]
print(list3)
Python真的很方便,許多函式、方法都已經被建立了!
但是如何正確使用才是最重要的。
下一篇來介紹Python的黑魔法:List Comprehension