Skip to main content

Python List 介紹

注意 Python List 部分操作是 in-place。
也就是說: 沒回傳值,直接作用在 invoker reference 所指定的 instance 身上。

另外就是 Python 提供原生的工具方法可以使用,例如: sorted, reversed。
原生的工具方法通常都會複製出新的回傳值,不影響既有 instance。

再來就是 Python 中有 operator module
operator module 也提供了些 list 的比對操作。

最特殊的是,Python 中 operator 的 overloading,
讓你用數學的觀念來處理 list。

嗯. 如果能有一個整合好的 module 會更好,
分散太多地方反倒是造成學習與使用上的困難。

Python List 建構方式

就中括號包起來便是,
允許放入不同型別的元素,
但,若不同型別在迴圈與 Comprehension 走訪時需注意可能出錯。

list = [1,2,3, 'A', 'B', 'C']

Python List 操作

我把操作分三類
A: instance operation: list 資料結構本身提供的方法。

這類操作通常 沒有 return 值, 如 append

B: Python built-in utility: 類似 Util 類別,相關操作不影響 instance 本身

這類操作通常 會有 return 值, 如 slice, reversed fun, sorted fun

C: 額外獨立的特殊 operators

例如: in, del, *, + 等 operators

from operator import eq
import operator

listA = [1,2,3]
print(listA)
# [1, 2, 3]


list_int = [13, 12, 11]
print(lint_int)
# [13, 12, 11]
____
OperationReturnin-placeExampleDescriptionType
appendNonein-placelistA.append([4,5,6])
# [1, 2, 3, [4, 5, 6]]
附加 單一 元素instance
insertNonein-placelistA.insert(0, ['X','Y'])
# [['X', 'Y'], 1, 2, 3, [4, 5, 6]]
插入單一元素至指定位置
zero-based
instance
extendNonein-placelistA.extend('unpack')
# [['X', 'Y'], 1, 2, 3, [4, 5, 6], 'u', 'n', 'p', 'a', 'c', 'k']
將指定 sequence
unpack 成 items 後 append
instance
compose
+
YNlistB = ['item1', 'item2']
composed = listA + listB
# [['X', 'Y'], 1, 2, 3, [4, 5, 6], 'u', 'n', 'p', 'a', 'c', 'k', 'item1', 'item2']
合併兩個 list 的元素
成為單一個 list
Operator Overload
duplicate
*
YNlistB*2
# ['item1', 'item2', 'item1', 'item2']
複製元素指定次數Operator Overload
removeNonein-placecomposed.remove(['X','Y'])
#[1, 2, 3, [4, 5, 6], 'u', 'n', 'p', 'a', 'c', 'k', 'item1', 'item2']
移除指定元素instance
delNin-place del composed[0:3]
#[[4, 5, 6], 'u', 'n', 'p', 'a', 'c', 'k', 'item1', 'item2']
del composed[-2:]
#[[4, 5, 6], 'u', 'n', 'p', 'a', 'c', 'k']
依據 index 刪除指定元素Special Operator
sliceYNs = composed[1:]
# ['u', 'n', 'p', 'a', 'c', 'k']
複製區段元素Operator/Syntax
sortNonein-placelist_int.sort()
# [11, 12, 13]
s.sort()
# ['a', 'c', 'k', 'n', 'p', 'u']
排序instance
reverseNonein-places.reverse()
# ['u', 'p', 'n', 'k', 'c', 'a']
反向排序instance
sortedYNs2 = sorted(s)
# ['a', 'c', 'k', 'n', 'p', 'u']
複製出一個排過序的副本Utility
with return
reversedY
list_reverseiterator
Nr2 = reversed(s2)
for x in r2:
  print(x)
複製出一個 iterable 類別Utility
with return
inYNprint( 11 in list_int)
# True
檢驗是否有指定元素Operator Overload