Python list列表基本操作詳解

2020-07-16 10:05:24
列表是 Python 中的一種序列型資料結構,其中的每個元素都有自己的位置,稱為下標或索引。列表中不同的下標指向了不同的元素,第一個下標值從“0”開始,最後一個下標值是列表的元素個數減一。

定義列表使用成對的中括號[ ],其中元素之間使用逗號,分隔,列表中各個元素的資料型別可以不同,例如:

lis1 = ['a',  'b', 2000, 2019]
list2 = [1, 2, 3, 4, 5]


存取列表中的元素需要使用下標,例如“list1[1]”表示取得“list1”中的第二個元素,即字串“b”。獲取列表中連續的元素可以使用下標範圍的方式,例如:

print(list2[1:3])

Python 中所有基於範圍的語法都遵循“左閉右開”原則,即起始下標對應的元素被包含在內,範圍內最後一個元素是結束下標對應的元素之前的元素。

因此上述程式碼的執行結果如下所示:

>>> lis1 = ['a',  'b', 2000, 2019]
>>> list2 = [1, 2, 3, 4, 5]
>>> print(list2[1:3])
[2, 3]

可見,“list2[3]”對應的元素是“4”,使用“list2[1:3]”方式獲取到的實際上只有“2”和“3”兩個元素。

要取得列表的最後兩個元素,可以使用這個程式碼:

print(list2[-2:])

上述程式碼的執行結果如下所示:

>>> lis1 = ['a',  'b', 2000, 2019]
>>> list2 = [1, 2, 3, 4, 5]
>>> print(list2[1:3])
[2, 3]
>>> print(list2[-2:])
[4, 5]


修改列表中元素的值可以通過對對應下標的元素重新賦值的方式實現,例如:

list2[2] = 6
print(list2)

上述程式碼的執行結果如下所示:

>>> lis1 = ['a',  'b', 2000, 2019]
>>> list2 = [1, 2, 3, 4, 5]
>>> print(list2[1:3])
[2, 3]
>>> print(list2[-2:])
[4, 5]
>>> list2[2] = 6
>>> print(list2)
[1, 2, 6, 4, 5]


與獲取連續的元素相似,修改連續的元素的值也可以使用下標範圍的方式,例如:

list2[2:4] = ['C', 'D', 'E']
print(list2)

上述程式碼的執行結果如下所示:

>>> lis1 = ['a',  'b', 2000, 2019]
>>> list2 = [1, 2, 3, 4, 5]
>>> print(list2[1:3])
[2, 3]
>>> print(list2[-2:])
[4, 5]
>>> list2[2] = 6
>>> print(list2)
[1, 2, 6, 4, 5]
>>> list2[2:4] = ['C', 'D', 'E']
>>> print(list2)
[1, 2, 'C', 'D', 'E', 5]

這裡使用下標範圍的方式依然遵循“左閉右開”原則,“2:4”實際上修改的是第三、第四兩個元素,但新值有“C”“D”“E”三個字串,因此最終結果是將 list2 的第三、第四兩個元素替換為了三個元素。

類似地,也可以使用下標範圍的方式刪除列表中的元素,例如:

list2[3:4] = [ ]
print(list2)

上述程式碼的執行結果如下所示:

>>> lis1 = ['a',  'b', 2000, 2019]
>>> list2 = [1, 2, 3, 4, 5]
>>> print(list2[1:3])
[2, 3]
>>> print(list2[-2:])
[4, 5]
>>> list2[2] = 6
>>> print(list2)
[1, 2, 6, 4, 5]
>>> list2[2:4] = ['C', 'D', 'E']
>>> print(list2)
[1, 2, 'C', 'D', 'E', 5]
>>> list2[3:4] = [ ]
>>> print(list2)
[1, 2, 'C', 'E', 5]


以此類推,清空整個列表可以使用

list2[:] = []


列表也支援巢狀,例如:

a = ['a', 'b', 'c']
b = [1, 2, 3]
x = [a, b]
print(x)

上述程式碼的執行結果如下所示:

>>> a = ['a', 'b', 'c']
>>> b = [1, 2, 3]
>>> x = [a, b]
>>> print(x)
[['a', 'b', 'c'], [1, 2, 3]]


刪除列表可以使用 del 語句,例如:

a = ['a', 'b', 'c']
del a
print(a)

上述程式碼的執行結果如下所示:

>>> a = ['a', 'b', 'c']
>>> del a
>>> print(a)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
    print(a)
NameError: name 'a' is not defined

可見執行了刪除列表 a 的語句後再次存取a將報錯,報錯內容意為名稱 a 未定義。

與字串相似,Python 中的常見運算子對列表也起作用,“+”“*”“in”運算子對列表的作用如表 1 所示

表 1:“+”“*”“in”運算子對列表的作用
運算子 表示式 結果 描述
+ [1, 2, 3]+[4, 5, 6] [1, 2, 3, 4, 5, 6] 組合
* ['Hi!']*4 ['Hi!', 'Hi!' , 'Hi!', 'Hi!'] 重複
in 3 in [1, 2, 3] True 元素是否存在於列表中