Python中的列表(List)

列表(List)是 Python 中最基本的數據結構,它是一種有序的集合,列表中每個元素都有其對應的位置值(索引)。

創建列表

一般在創建列表時,分爲創建空列表和非空列表,其創建方式如下:

# 創建空列表,有兩種方式
list1 = list()
list2 = []

# 創建同一數據類型的列表
list3 = ["a", "b", "c", "d", "e", "f"]

# 創建不同數據類型的列表
list4 = ["a", 2, {}, [1, 3], False, ()]

從上面可以看到,我們只需要把列表的所有元素放在 方括號 [] 裏面,每個元素之間通過 逗號 , 間隔起來即可,當然,列表中允許存放不同數據類型的元素。

獲取列表中的元素

  • 下標索引取值

列表中的下標索引都是從 0 開始計算,第一個元素索引是 0 ,第二個元素索引是 1 ,以此類推。

>>> books = ["語文", "數學", "英語", "歷史", "物理", "化學"]
>>>
>>> books[0]
'語文'
>>> books[5]
'化學'

另外,我們也可以從列表尾部開始計算索引,此時最後一個元素索引爲 -1,倒數第二個元素索引爲 -2 ,以此類推即可。當我們需獲取列表最後一個元素,但又不知道列表長度時,可以通過該方式快速獲取。

>>> books = ["語文", "數學", "英語", "歷史", "物理", "化學"]
>>>
>>> books[-1]
'化學'
>>> books[-2]
'物理'
>>> books[-6]
'語文'
>>>
>>> books[100]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range

如果設置的索引不存在,那麼會報錯:IndexError: list index out of range

  • 切片取值

列表中切片的語法爲:列表[start:end:step],通過切片可以獲取到列表中指定範圍的元素。在這裏,需要注意切片的規則是左閉右開,也就是說包含頭部 start,但不包含尾部 end ,而 step 則表示切片的步長,需要每間隔 step 個元素取一次。

>>> books = ["語文", "數學", "英語", "歷史", "物理", "化學"]
>>>
>>> books[1:4:2]  # 從第2個到第4個元素,每間隔2個元素取值
['數學', '歷史']
>>> books[1::2]  # 從第2個到列表末尾,每間隔2個元素取值
['數學', '歷史', '化學']
>>> books[1:4]  # 獲取從第2個到第4個的所有元素
['數學', '英語', '歷史']
>>> books[:]  # 獲取全部元素
['語文', '數學', '英語', '歷史', '物理', '化學']

列表切片時,我們可以設置切片的步長爲負值,比如設置 step = -1,那麼我們就可以逆序獲取列表的元素。

>>> books[::-1]  # 逆序獲取全部元素,即反轉列表
['化學', '物理', '歷史', '英語', '數學', '語文']

更新列表

在對列表進行更新操作時,我們可以根據索引對列表的元素進行修改或更新,也可以使用 append() 或 insert() 方法來添加元素。

  • 通過下標索引更新列表
>>> books = ["語文", "數學", "英語", "歷史", "物理", "化學"]
>>>
>>> books[1] = "地理"
>>> print(books)
['語文', '地理', '英語', '歷史', '物理', '化學']

當然,我們也可以通過切片賦值的方式來更新列表。

>>> books[2:4] = ["英語222", "歷史222"]
>>> print(books)
['語文', '地理', '英語222', '歷史222', '物理', '化學']
>>>
>>> books[2:4] = 1234
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can only assign an iterable

需注意的是,通過切片方式賦值的值必須是可迭代對象(比如列表、元組等),否則會出現報錯:TypeError: can only assign an iterable

  • 通過 append() 在列表末尾添加新對象
>>> books = ["語文", "數學", "英語", "歷史", "物理", "化學"]
>>>
>>> books.append("地理")
>>> print(books)
['語文', '數學', '英語', '歷史', '物理', '化學', '地理']
>>>
>>> books.append(6666)
>>> print(books)
['語文', '數學', '英語', '歷史', '物理', '化學', '地理', 6666]
  • 通過 insert() 在指定位置插入新對象
>>> books = ["語文", "數學", "英語", "歷史", "物理", "化學"]
>>>
>>> books.insert(1, "地理")
>>> print(books)
['語文', '地理', '數學', '英語', '歷史', '物理', '化學']

刪除列表中的元素

在對列表進行刪除操作時,我們可以根據索引刪除對應位置的元素,也可以根據元素本身的值進行刪除,當然,還可以直接清空整個列表。

  • 通過 del 刪除指定索引下的元素
>>> books = ["語文", "數學", "英語", "歷史", "數學", "物理", "數學"]
>>>
>>> del books[1]  # 刪除第 2 個元素
>>> print(books)
['語文', '英語', '歷史', '數學', '物理', '數學']
>>>
>>> del books[1:4]  # 刪除第 2 個到第 4 個的所有元素
>>> print(books)
['語文', '物理', '數學']

如果要刪除列表的索引不存在,那麼會出現報錯,如下:

>>> del books[100]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list assignment index out of range
  • 通過 pop() 刪除指定索引下的元素,會返回刪除的元素
>>> books = ["語文", "數學", "英語", "歷史", "數學", "物理", "數學"]
>>>
>>> books.pop()  # 默認刪除列表最後一個元素
'數學'
>>> print(books)
['語文', '數學', '英語', '歷史', '數學', '物理']
>>>
>>> books.pop(3)  # 刪除列表指定索引下的元素
'歷史'
>>> print(books)
['語文', '數學', '英語', '數學', '物理']

如果要刪除列表的索引不存在,那麼會出現報錯,如下:

>>> books.pop(100)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: pop index out of range
  • 通過 remove() 刪除指定元素,只會刪除匹配的第一個元素
>>> books = ["語文", "數學", "英語", "歷史", "數學", "物理", "數學"]
>>>
>>> books.remove("數學")
>>> print(books)
['語文', '英語', '歷史', '數學', '物理', '數學']

如果要刪除列表的對象不存在,那麼會出現報錯,如下:

>>> books.remove("美術")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list
  • 通過 clear() 刪除列表所有元素
>>> books = ["語文", "數學", "英語", "歷史", "數學", "物理", "數學"]
>>>
>>> books.clear()
>>>
>>> print(books)
[]

列表運算操作符

  • 運算符 + ,用於組合拼接列表
>>> list1 = [1, 3, 5]
>>> list2 = [2, 4, 6]
>>>
>>> print(list1 + list2)
[1, 3, 5, 2, 4, 6]
  • 運算符 * ,用於重複列表
>>> name = ["hello", "word"]
>>>
>>> print(name * 3)
['hello', 'word', 'hello', 'word', 'hello', 'word']
  • 關鍵字 in

通過關鍵字 in ,可檢查當前列表中是否包含指定元素,返回結果爲布爾值 True 或 False。

>>> list3 = [1, 2, 3]
>>>
>>> print(2 in list3)
True
>>>
>>> print(6 in list3)
False

通過關鍵字 in ,還可以用於遍歷當前列表。

books = ["語文", "數學", "英語", "歷史", "物理", "化學"]
for i in books:
    print(i, end=" ")

列表函數&方法

函數 & 方法 描述
len(list) 返回列表元素個數
max(list) 返回列表元素最大值
min(list) 返回列表元素最小值
list(iterable) 將可迭代對象轉換爲列表,若 iterable 爲空則創建空列表
list.append(obj) 在列表末尾添加新的對象
list.count(obj) 統計某個元素在列表中出現的次數
list.extend(seq) 在列表末尾一次性追加另一個序列中的多個值
list.index(obj) 從列表中找出某個元素第一次出現的索引位置
list.insert(index, obj) 將對象插入到列表指定索引位置
list.pop(index) 刪除並返回列表中的一個元素(默認最後一個元素)
list.remove(obj) 刪除列表中某個值(只刪除第一個匹配項)
list.reverse() 反向列表中元素
list.sort() 對原列表進行排序
list.clear() 清空列表
list.copy() 複製列表,相當於 list[:] ,使用的是淺拷貝
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章