Python 列表數據類型(list)[學習 Python 必備基礎知識][看此一篇就夠了]

您的“關注”和“點贊”,是信任,是認可,是支持,是動力…

如意見相佐,可留言。
本人必將竭盡全力試圖做到準確和全面,終其一生進行修改補充更新。

在這裏插入圖片描述

1 Python 列表數據類型概述

列表是可變序列,通常用於存放同類項目的集合(其中精確的相似程度將根據應用而變化)。

列表數據類型,在 Python 中用list表示,可以用type()函數查看。如下所示:

list_demo = ["www.python.org", '碼農阿杰', 100.1, [1, 2, 3, 4]]  # 創建列表,並賦值給變量 list_demo
print(type(list_demo))

運行結果:

<class 'list'>

列表將所有元素都放在一對中括號[ ]裏面,相鄰元素之間用逗號,分隔,element1 ~ elementn 表示列表中的元素,個數沒有限制,只要是 Python 支持的數據類型就可以。

列表可以存儲整數、小數(浮點數)、布爾值、複數、字符串、列表、元組等任何類型的數據,並且同一個列表中元素的類型也可以不同。

注意事項:爲了提高程序的可讀性,不建議將不同類型的數據放入到同一個列表中。

如下所示:

[element1, element2, element3, ..., elementn]
["www.python.org", '碼農阿杰', 100.1, [1, 2, 3, 4]]

2 Python 創建列表

2.1 使用 [] 直接創建列表

格式如下:

listname = [element1 , element2 , element3 , ... , elementn]  # 包含多個元素的列表
emptylist = []  # 一個元素都沒有的列表,稱爲空列表

對以上格式說明:

  • listname :變量名。創建完列表後,通常會把列表賦值給一個變量,便於調用列表。
  • element1 ~ elementn: 表示列表的元素。

使用 [] 直接創建列表舉例,如下所示:

list_demo1 = ['微信公衆號:', '碼農阿杰']
list_demo2 = ['博客園', 'https://www.cnblogs.com/manongajie/']
list_demo3 = ['CSDN 博客', 'https://blog.csdn.net/manongajie']
list_demo4 = ['郵箱', '[email protected]']
list_demo5 = [7, 4, 5, 9, 9, 1, 7, 4, 1]  # QQ
list_demo6 = []  # 空列表

2.2 使用 list() 函數創建列表

使用 list() 內置函數創建列表,其實就是將其它數據類型轉換爲列表類型。舉例如下所示:

# 將字符串轉換成列表
list_demo1 = list('碼農阿杰')
print(list_demo1)

# 將元組轉換成列表
tuple_demo1 = ('python', 'java', 'php', 'c')
list_demo2 = list(tuple_demo1)
print(list_demo2)

# 創建空列表
list_demo3 = list()
print(list_demo3)

運行結果:

['碼', '農', '阿', '傑']
['python', 'java', 'php', 'c']
[]

3 訪問列表元素

3.1 使用索引訪問列表元素

格式如下所示:

listname[index]

對以上格式說明,

  • listname:表示列表名字。
  • index:表示索引值。Python 支持正索引和負索引。

舉例如下所示:

list_demo4 = ['微信公衆號:碼農阿杰', '博客園 https://www.cnblogs.com/manongajie/', 'CSDN 博客 https://blog.csdn.net/manongajie']

print('list_demo4[0] =', list_demo4[0])
print('list_demo4[1] =', list_demo4[1])
print('list_demo4[2] =', list_demo4[2])
print('list_demo4[-1] =', list_demo4[-1])
print('list_demo4[-2] =', list_demo4[-2])
print('list_demo4[-3] =', list_demo4[-3])

運行結果:

list_demo4[0] = 微信公衆號:碼農阿杰
list_demo4[1] = 博客園 https://www.cnblogs.com/manongajie/
list_demo4[2] = CSDN 博客 https://blog.csdn.net/manongajie
list_demo4[-1] = CSDN 博客 https://blog.csdn.net/manongajie
list_demo4[-2] = 博客園 https://www.cnblogs.com/manongajie/
list_demo4[-3] = 微信公衆號:碼農阿杰

3.2 使用切片訪問列表元素

格式如下所示:

listname[start: end: step]

對以上格式說明,

  • lsitname:表示列表名字。
  • start:表示開始索引。
  • end:表示結束索引。
  • step:表示步長。

各個參數的使用比較靈活,詳情 舉例如下所示:

list_demo5 = [1, 2, 3, 4, 5, 6]

print('list_demo5[::] =', list_demo5[::])  # 三個參數都不寫
print('list_demo5[:2:2] =', list_demo5[:2:2])  # 不寫 start 參數
print('list_demo5[1::2] =', list_demo5[1::2])  # 不寫 end 參數
print('list_demo5[1:2:] =', list_demo5[1:2:])  # 不寫 step 參數
print('list_demo5[1:4:2] =', list_demo5[1:4:2])
print('list_demo5[1:4:3] =', list_demo5[1:4:3])
print('list_demo5[1:2] =', list_demo5[1:2])  # 不要 step 參數

# 不要 step 參數
print('list_demo5[:] =', list_demo5[:])
print('list_demo5[1:] =', list_demo5[1:])
print('list_demo5[2:] =', list_demo5[2:])
print('list_demo5[:1] =', list_demo5[:1])
print('list_demo5[:2] =', list_demo5[:2])
print('list_demo5[1:3] =', list_demo5[1:3])

運行結果:

list_demo5[::] = [1, 2, 3, 4, 5, 6]
list_demo5[:2:2] = [1]
list_demo5[1::2] = [2, 4, 6]
list_demo5[1:2:] = [2]
list_demo5[1:4:2] = [2, 4]
list_demo5[1:4:3] = [2]
list_demo5[1:2] = [2]
list_demo5[:] = [1, 2, 3, 4, 5, 6]
list_demo5[1:] = [2, 3, 4, 5, 6]
list_demo5[2:] = [3, 4, 5, 6]
list_demo5[:1] = [1]
list_demo5[:2] = [1, 2]
list_demo5[1:3] = [2, 3]

4 Python刪除列表

Python 自帶的有垃圾回收機制,對於創建好的列表,如果不再使用,Python 會自動將其回收。

當然,也可以手動進行刪除,那就要使用del關鍵字了。

使用del關鍵字手動刪除的格式如下:

del listname

對以上格式說明,

  • listname:表示要珊瑚列表的名稱。

舉例如下所示:

list_demo6 = [1, 2, 3, 4, 5]
print(list_demo6)
del list_demo6  # 使用 del 關鍵字刪除列表 list_demo6
print(list_demo6)  # 刪除後,再次打印

運行結果:

[1, 2, 3, 4, 5]
Traceback (most recent call last):
  File "D:/Data/PycharmProjects/demo/demo.py", line 68, in <module>
    print(list_demo6)  # 刪除後,再次打印
NameError: name 'list_demo6' is not defined

5 列表基本操作(增刪改查)

5.1 增(添加列表元素)

5.1.1 Python append() 方法添加元素

格式如下所示:

listname.append(obj)

對以上格式說明,

  • append()append()方法會在列表中添加元素,要注意的是:append()添加的元素在列表的末尾。
  • listname:表示要添加元素的列表。
  • obj:表示要添加到列表末尾的數據。obj如果是列表或元組,會將列表或元組當做一個整體作爲要添加元素列表的一個元素,形成一個包含列表或元組的“新列表”(“新列表”指的是列表內存地址沒變,元素更新了)。

舉例如下所示:

例一,添加數據爲字符串

list_demo1 = ['微信公衆號', ':']  # 要添加元素的列表 list_demo1
print('---- 原列表 ----:')
print(list_demo1)
list_demo1.append('碼農阿杰')  # 用 append() 函數向列表 list_demo1 的末尾添加的數據爲字符串
print('---- 添加元素後的列表 ----:')
print(list_demo1)

運行結果:

---- 原列表 ----['微信公衆號', ':']
---- 添加元素後的列表 ----['微信公衆號', ':', '碼農阿杰']

例二,添加數據爲列表

list_demo1 = ['微信公衆號', ':']  # 要添加元素的列表 list_demo1
print('---- 原列表 ----:')
print(list_demo1)
print('---- 添加元素後的列表 ----:')
list_demo1.append([1, 2, 3])  # 用 append() 函數向列表 list_demo1 的末尾添加的數據爲列表
print(list_demo1)

運行結果:

---- 原列表 ----['微信公衆號', ':']
---- 添加元素後的列表 ----['微信公衆號', ':', [1, 2, 3]]

例三,添加數據爲元組

list_demo1 = ['微信公衆號', ':']  # 要添加元素的列表 list_demo1
print('---- 原列表 ----:')
print(list_demo1)
print('---- 添加元素後的列表 ----:')
list_demo1.append((1, 2, 3))  # 用 append() 函數向列表 list_demo1 的末尾添加的數據爲元組
print(list_demo1)

運行結果:

---- 原列表 ----['微信公衆號', ':']
---- 添加元素後的列表 ----['微信公衆號', ':', (1, 2, 3)]

5.1.2 Python extend() 方法添加元素

格式如下所示:

listname.extend(obj)

對以上格式說明,

  • extend()extend()會在列表中添加元素,要注意的是extend()添加的元素在列表的末尾。這一點跟append()方法一致。
  • listname:要添加元素的列表。
  • objobj表示要添加到列表末尾的數據。要注意的是:會與append()方法不同,append()方法會將字符串、列表或元組當做一個整體作爲要添加元素列表的一個元素,形成一個包含字符串、列表或元組的“新列表”(“新列表”指的是列表內存地址沒變,元素更新了);而extend()方法會將它們包含的元素逐個添加到列表中,不會將它們視爲一個整體哦。

舉例如下所示:
例一,添加數據爲字符串

list_demo1 = ['微信公衆號', ':']  # 要添加元素的列表 list_demo1
print('---- 原列表 ----:')
print(list_demo1)
list_demo1.extend('碼農阿杰')  # 用 extend() 函數向列表 list_demo1 的末尾添加的數據爲字符串
print('---- 添加元素後的列表 ----:')
print(list_demo1)

運行結果:

---- 原列表 ----['微信公衆號', ':']
---- 添加元素後的列表 ----['微信公衆號', ':', '碼', '農', '阿', '傑']

例二,添加數據爲列表

list_demo1 = ['微信公衆號', ':']  # 要添加元素的列表 list_demo1
print('---- 原列表 ----:')
print(list_demo1)
print('---- 添加元素後的列表 ----:')
list_demo1.extend([1, 2, 3])  # 用 extend() 函數向列表 list_demo1 的末尾添加的數據爲列表
print(list_demo1)

運行結果:

---- 原列表 ----['微信公衆號', ':']
---- 添加元素後的列表 ----['微信公衆號', ':', 1, 2, 3]

例三,添加數據爲元組

list_demo1 = ['微信公衆號', ':']  # 要添加元素的列表 list_demo1
print('---- 原列表 ----:')
print(list_demo1)
print('---- 添加元素後的列表 ----:')
list_demo1.extend((1, 2, 3))  # 用 extend() 函數向列表 list_demo1 的末尾添加的數據爲元組
print(list_demo1)

運行結果:

---- 原列表 ----['微信公衆號', ':']
---- 添加元素後的列表 ----['微信公衆號', ':', 1, 2, 3]

5.1.3 Python insert() 方法插入元素

格式如下所示:

listname.insert(index , obj)

對以上格式說明,

  • insert()insert()方法可以在列表中間某個(指定位置)位置插入元素。append()extend()方法只能在列表末尾插入元素。
  • listname:表示要插入元素的列表。
  • index:表示指定位置的索引值。
  • obj:要插入列表的數據。如果插入的數據是列表或元組,insert() 也會將它們視爲一個整體,作爲一個元素插入到列表中,在這一點上和 append()方法是一樣的。

舉例如下所示:
例一,插入數據爲字符串

list_demo1 = ['微信公衆號', ':']  # 要添加元素的列表 list_demo1
print('---- 原列表 ----:')
print(list_demo1)
print('---- 添加元素後的列表 ----:')
list_demo1.insert(1, '碼農阿杰')  # 用 insert() 方法向列表 list_demo1 中索引值爲 1 的位置添加的數據爲字符串
print(list_demo1)

運行結果:

---- 原列表 ----['微信公衆號', ':']
---- 添加元素後的列表 ----['微信公衆號', '碼農阿杰', ':']

例二,插入數據爲列表

list_demo1 = ['微信公衆號', ':']  # 要添加元素的列表 list_demo1
print('---- 原列表 ----:')
print(list_demo1)
print('---- 添加元素後的列表 ----:')
list_demo1.insert(1, [1, 2, 3])  # 用 insert() 方法向列表 list_demo1 中索引值爲 1 的位置添加的數據爲列表
print(list_demo1)

運行結果:

---- 原列表 ----['微信公衆號', ':']
---- 添加元素後的列表 ----['微信公衆號', [1, 2, 3], ':']

例三,插入數據爲元組

list_demo1 = ['微信公衆號', ':']  # 要添加元素的列表 list_demo1
print('---- 原列表 ----:')
print(list_demo1)
print('---- 添加元素後的列表 ----:')
list_demo1.insert(1, (1, 2, 3))  # 用 insert() 方法向列表 list_demo1 中索引值爲 1 的位置添加的數據爲元組
print(list_demo1)

運行結果:

---- 原列表 ----['微信公衆號', ':']
---- 添加元素後的列表 ----['微信公衆號', (1, 2, 3), ':']

5.1.4 其他方法(使用 + 加法運算符)

使用+加法運算符將兩個或者多個列表相加,達到拼接列表的目的,這樣做會生成一個新的列表,原有的列表不會被改變。

從執行效率上看,不建議使用此種方法,因爲執行效率較低。

建議使用之前介紹的幾種方法(術業有專攻,用專門的方法更專業哦)。

舉例如下所示:

list1 = ['微信公衆號:']
list2 = ['碼農阿杰']

print('list1 =', list1)
print('list2 =', list2)
print('list1 + list2 =', list1 + list2)

運行結果:

list1 = ['微信公衆號:']
list2 = ['碼農阿杰']
list1 + list2 = ['微信公衆號:', '碼農阿杰']

5.2 刪(刪除列表元素)

5.2.1 根據目標元素所在位置的索引進行刪除

根據目標元素所在位置的索引進行刪除,需要用del 關鍵字或 pop() 方法。

del關鍵字,是專門用來執行刪除操作的,不僅可以刪除列表,還可以刪除列表中的某些元素。
pop()方法,刪除列表中指定索引處的元素。

使用格式如下所示:

del listname[index]  # 刪除列表中的單個元素
del listname[start : end]  # 刪除列表中某段連續的元素,del 會刪除從索引 start 到 end 之間的元素,不包括 end 位置的元素。 

對以上格式說明,

  • listname表示要刪除元素的列表。
  • index表示要刪除元素的索引值。
  • start表示起始索引值。
  • end表示結束索引值。
listname.pop(index)

對以上格式說明,

  • listname表示要刪除元素的列表。
  • index表示要刪除元素的索引值。如果不寫 index 參數,默認會刪除列表中的最後一個元素。

舉例如下所示:

例一,使用del關鍵字刪除列表元素
(1)使用del關鍵字刪除單個元素

list_demo = ['微信公衆號', ':', '碼農阿杰']  # 要刪除元素的列表

print('刪除前的列表,list_demo =', list_demo)
del list_demo[1]  # 刪除索引值 1 所對應的元素
print('刪除後的列表,list_demo =', list_demo)

運行結果:

刪除前的列表,list_demo = ['微信公衆號', ':', '碼農阿杰']
刪除後的列表,list_demo = ['微信公衆號', '碼農阿杰']

(2)使用del關鍵字刪除某段連續的元素

list_demo = ['微信公衆號', ':', '碼農阿杰']  # 要刪除元素的列表

print('刪除前的列表,list_demo =', list_demo)
del list_demo[0: 2]  # 刪除索引值 0 到 2 ,不包括 2 所對應的連續的元素
print('刪除後的列表,list_demo =', list_demo)

運行結果:

刪除前的列表,list_demo = ['微信公衆號', ':', '碼農阿杰']
刪除後的列表,list_demo = ['碼農阿杰']

例二,使用pop()方法刪除列表元素
(1)指定index參數

list_demo = ['微信公衆號', ':', '碼農阿杰']
print('刪除前:list_demo =', list_demo)
list_demo.pop(1)  # 刪除索引值爲 1 的元素
print('刪除後:list_demo =', list_demo)

運行結果:

刪除前:list_demo = ['微信公衆號', ':', '碼農阿杰']
刪除後:list_demo = ['微信公衆號', '碼農阿杰']

(2)不指定index參數

list_demo = ['微信公衆號', ':', '碼農阿杰']
print('刪除前:list_demo =', list_demo)
list_demo.pop()  # 不指定 index 參數,默認刪除最後一個元素
print('刪除後:list_demo =', list_demo)

運行結果:

刪除前:list_demo = ['微信公衆號', ':', '碼農阿杰']
刪除後:list_demo = ['微信公衆號', ':']

5.2.2 根據元素本身的值進行刪除

根據元素本身的值進行刪除,要用到列表提供的remove()方法。

使用格式如下所示:

listname.remove(element)

對以上語法格式說明:

  • remove()remove()方法會根據元素本身的值進行刪除。要注意的是:①該方法只會刪除遇見的第一個指定元素,如果列表中還有相同的元素是不會被刪除的;②必須保證要刪除的元素在列表中是存在的,否則會報錯。
  • listname:要刪除元素的列表。
  • element:要刪除的元素。

舉例如下所示:
(1)列表中存在指定要刪除的元素

list_demo = ['微信公衆號', ':', '碼農阿杰', '微信公衆號']
print('刪除前:list_demo =', list_demo)
list_demo.remove('微信公衆號')  # 刪除指定元素 “微信公衆號”,只會刪除遇見的第一個指定元素
print('刪除後:list_demo =', list_demo)

運行結果:

刪除前:list_demo = ['微信公衆號', ':', '碼農阿杰', '微信公衆號']
刪除後:list_demo = [':', '碼農阿杰', '微信公衆號']

(2)列表中不存在指定要刪除的元素

list_demo = ['微信公衆號', ':', '碼農阿杰', '微信公衆號']
print('刪除前:list_demo =', list_demo)
list_demo.remove('微信號')  # 列表中不存在指定要刪除的元素,會報錯
print('刪除後:list_demo =', list_demo)

運行結果:

刪除前:list_demo = ['微信公衆號', ':', '碼農阿杰', '微信公衆號']
Traceback (most recent call last):
  File "D:/Data/ProfessionalSkills/Python/PycharmProjects/demo/demo.py", line 16, in <module>
    list_demo.remove('微信號')  # 列表中不存在指定要刪除的元素,會報錯
ValueError: list.remove(x): x not in list

5.2.3 刪除列表中的所有元素

要刪除列表中的所有元素,需要使用列表提供的clear()方法。

使用格式如下所示:

listname.clear()

對以上格式說明,

  • clear()clear()方法會刪除列表中的所有元素。
  • listname:要刪除所有元素的列表。

舉例如下所示:

list_demo = ['微信公衆號', ':', '碼農阿杰']
print('刪除前:list_demo =', list_demo)
list_demo.clear()  # 刪除列表中所有的元素,也可以稱爲清空列表
print('刪除後:list_demo =', list_demo)

運行結果:

刪除前:list_demo = ['微信公衆號', ':', '碼農阿杰']
刪除後:list_demo = []

5.3 改(修改列表元素)

5.3.1 修改單個元素

格式如下所示:

listname[index] = element

對以上格式說明,

  • listname:要修改元素的列表。
  • index:要修改元素對應的索引值。
  • element:新元素值。

舉例如下所示:

list_demo = ['微信號', ':', '碼農阿杰']
print('修改前:list_demo =', list_demo)
list_demo[0] = '微信公衆號'  # 修改索引值爲 0 的元素
print('修改後:list_demo =', list_demo)

運行結果:

修改前:list_demo = ['微信號', ':', '碼農阿杰']
修改後:list_demo = ['微信公衆號', ':', '碼農阿杰']

5.3.2 修改一組元素

修改一組元素,其實就是使用切片的方式給一組元素賦值。但是,不支持單個賦值(通常指數字。如果是字符串的話,Python 會自動把字符串轉換成序列,其中的每個字符都是一個元素)。

如果不指定步長(指的是不指定step參數),新賦值的元素個數與原來的元素個數可以不相同。如此一來,就說明該操作既可以爲列表添加元素(對空切片賦值),也可以爲列表刪除元素。

如果指定步長,就要求新賦值的元素個數與原來的元素個數相同。

舉例如下所示:
例一,不指定步長
(1)修改一組元素的值

list_demo = ['微信號', '=', '碼農阿杰', '。']
print('修改前:list_demo =', list_demo)
list_demo[0: 2] = ['微信公衆號', ':']
print('修改後:list_demo =', list_demo)

運行結果:

修改前:list_demo = ['微信號', '=', '碼農阿杰', '。']
修改後:list_demo = ['微信公衆號', ':', '碼農阿杰', '。']

(2)不支持單個賦值(通常指數字)

list_demo = ['微信號', ':', '碼農阿杰', '。']
print('修改前:list_demo =', list_demo)
list_demo[0: 0] = 12  # 不支持單個賦值(數字)
print('修改後:list_demo =', list_demo)

運行結果:

修改前:list_demo = ['微信號', ':', '碼農阿杰', '。']
Traceback (most recent call last):
  File "D:/Data/ProfessionalSkills/Python/PycharmProjects/demo/demo.py", line 36, in <module>
    list_demo[0: 0] = 12
TypeError: can only assign an iterable

(3)不支持單個賦值(通常指數字),但是,如果是字符串的話,Python 會自動把字符串轉換成序列,其中的每個字符都是一個元素

list_demo = ['微信號', ':', '碼農阿杰', '。']
print('修改前:list_demo =', list_demo)
list_demo[0: 0] = '微信公衆號'  # 不支持單個賦值(通常指數字),但是,如果是字符串的話,Python 會自動把字符串轉換成序列,其中的每個字符都是一個元素
print('修改後:list_demo =', list_demo)

運行結果:

修改前:list_demo = ['微信號', ':', '碼農阿杰', '。']
修改後:list_demo = ['微', '信', '公', '衆', '號', '微信號', ':', '碼農阿杰', '。']

(4)爲列表添加元素(對空切片賦值)

list_demo = ['碼農阿杰']
print('修改前:list_demo =', list_demo)
list_demo[0: 0] = ['微信公衆號', ':']  # 對空切片賦值
print('修改後:list_demo =', list_demo)

運行結果:

修改前:list_demo = ['碼農阿杰']
修改後:list_demo = ['微信公衆號', ':', '碼農阿杰']

(5)爲列表刪除元素

list_demo = ['微信公衆號', ':', '碼農阿杰', '。']
print('修改前:list_demo =', list_demo)
# 這裏切片的寫法有很多種,例如 list_demo[:]、list_demo[0:]、list_demo[0: 4]、list_demo[-4:]等等,就不全部列舉了,可以研究一下切片。
list_demo[:] = ['微信公衆號', ':', '碼農阿杰']  # 新賦值的元素個數與原來的元素個數可以不相同。相當於重新給列表賦值,並且元素個數變少了。
print('修改後:list_demo =', list_demo)

運行結果:

修改前:list_demo = ['微信公衆號', ':', '碼農阿杰', '。']
修改後:list_demo = ['微信公衆號', ':', '碼農阿杰']

例二,指定步長

list_demo = [1, 2, 3, 4, 5, 6, 7]  # 爲了看的清楚,用字母添加到純是數字的列表中
print('修改前:list_demo =', list_demo)
list_demo[1: 6: 2] = ['a', 'b', 'c']  # 從索引 1 開始每隔兩個添加一個新元素,到索引 6 ,不包括 索引 6
print('修改後:list_demo =', list_demo)

運行結果:

修改前:list_demo = [1, 2, 3, 4, 5, 6, 7]
修改後:list_demo = [1, 'a', 3, 'b', 5, 'c', 7]

5.4 查(查找列表元素)

5.4.1 使用列表提供的index() 方法查找元素

使用格式如下所示:

listname.index(obj, start, end)

對以上格式說明,

  • 返回值:index()方法返回某個元素在列表中出現的位置(索引)。如果查找的元素不存在,會報錯。
  • listname:表示列表名稱。
  • obj:表示要查找的元素。
  • start:表示起始位置。可以不寫,表示檢索從開頭到end(不包括end)的元素。
  • end:表示結束位置。可以不寫,表示檢索從start到末尾的元素。
  • startend可以都不寫,表示檢索整個列表;都寫,表示檢索startend(不包括end)之間的元素。

舉例如下所示:

list_demo = [1, 2, 3, 4, 5, 6, 7]  # 列表

index1 = list_demo.index(3)  # 在整個列表中檢索元素 3 的位置
print('在整個列表中檢索元素 3 的位置:', index1)

index2 = list_demo.index(3, )
print('在整個列表中檢索元素 3 的位置:', index2)

index3 = list_demo.index(3)  # 檢索元素 3 在列表中的位置(在列表中的索引值)
print('元素 3 在列表中的位置爲:', index3)

index4 = list_demo.index(3, 0, 3)  # 在索引值 0 到 3 之間檢索元素 3 在列表中的位置
print('在索引值 0 到 3 之間檢索元素 3 在列表中的位置爲:', index4)

index5 = list_demo.index(3, 0, 2)  # 在索引值 0 到 2 之間檢索元素 3 在列表中的位置,會報錯,因爲在這個範圍內沒有元素 3
print('在索引值 0 到 2 之間檢索元素 3 在列表中的位置爲:', index5)

# index6 = list_demo.index(11)  # 也會報錯,因爲在列表中不存在要查找的元素
# print(index6)

運行結果:

在整個列表中檢索元素 3 的位置: 2
在整個列表中檢索元素 3 的位置: 2
元素 3 在列表中的位置爲: 2
在索引值 03 之間檢索元素 3 在列表中的位置爲: 2
Traceback (most recent call last):
  File "D:/Data/ProfessionalSkills/Python/PycharmProjects/demo/demo.py", line 69, in <module>
    index5 = list_demo.index(3, 0, 2)  # 在索引值 0 到 2 之間檢索元素 3 在列表中的位置,會報錯,因爲在這個範圍內沒有元素 3
ValueError: 3 is not in list
#Traceback (most recent call last):
#  File "D:/Data/ProfessionalSkills/Python/PycharmProjects/demo/demo.py", line 72, in <module>
#    index6 = list_demo.index(11)  # 也會報錯,因爲在列表中不存在要查找的元素
#ValueError: 11 is not in list

5.4.2 使用列表提供的count()方法查找元素

使用格式如下所示:

listname.count(obj)

對以上格式說明,

  • count()方法的返回值:count()方法返回某個元素在列表中出現的次數。如果返回 0,表示列表中不存在該元素。
  • listname:表示列表名。
  • obj:表示要統計的元素。

舉例如下所示:

list_demo = [1, 2, 3, 4, 3, 6, 3]  # 列表

nums1 = list_demo.count(3)  # 統計元素 3 在列表中出現的次數
print('統計元素 3 在列表中出現的次數:', nums1, '次。')

# 判斷列表中是否存在元素 7
nums2 = list_demo.count(7)

if nums2:
    print('列表中存在元素 7 ')
else:
    print('列表中不存在元素 7 ')

運行結果:

統計元素 3 在列表中出現的次數: 3 次。
列表中不存在元素 7 

6 列表排序

6.1 使用列表提供的 sort() 方法排序

對列表進行原地排序,可以使用列表自身提供的sort()方法。

使用格式如下所示:

listname.sort(*, key=None, reverse=False)

對以上格式說明,

  • sort()sort()方法會對列表進行原地排序,即修改原列表。
  • sort()方法接受兩個僅限以關鍵字形式傳入的參數。
  • key:指定帶有一個參數的函數,用於從每個列表元素中提取比較鍵 (例如 key=str.lower)。 對應於列表中每一項的鍵會被計算一次,然後在整個排序過程中使用。 默認值 None 表示直接對列表項排序而不計算一個單獨的鍵值。
  • reversereverse 爲一個布爾值。默認爲False,表示升序排序。 如果設爲 True,則每個列表元素將按反向順序(降序)比較進行排序。

舉例如下所示:
例一,

list_demo = [4, 1, 3, 2, 8, 5]

print('排序前 list_demo =', list_demo)
list_demo.sort()  # 對列表進行升序排序操作
# list_demo.sort(reverse=False)  # 升序排序操作也可以這麼寫
print('升序排序後 list_demo =', list_demo)
list_demo.sort(reverse=True)  # 降序排序
print('降序排序後 list_demo =', list_demo)

運行結果:

排序前 list_demo = [4, 1, 3, 2, 8, 5]
升序排序後 list_demo = [1, 2, 3, 4, 5, 8]
降序排序後 list_demo = [8, 5, 4, 3, 2, 1]

例二,

# 爲 key 參數準備調度函數
def take_second(element):
    return element[1]


list_demo = [(1, 3), (3, 5), (2, 4), (5, 1)]

print('排序前 list_demo =', list_demo)
list_demo.sort()  # 升序排序。元組作爲列表的元素,排序是以元組的第一個元素進行比較。
print('元組作爲列表的元素,排序是以元組的第一個元素進行比較 list_demo =', list_demo)
list_demo.sort(key=take_second)  # 升序排序。元組作爲列表的元素,排序是以元組的第二個元素進行比較。
print('元組作爲列表的元素,排序是以元組的第一個元素進行比較 list_demo =', list_demo)

運行結果:

排序前 list_demo = [(1, 3), (3, 5), (2, 4), (5, 1)]
元組作爲列表的元素,排序是以元組的第一個元素進行比較 list_demo = [(1, 3), (2, 4), (3, 5), (5, 1)]
元組作爲列表的元素,排序是以元組的第一個元素進行比較 list_demo = [(5, 1), (1, 3), (2, 4), (3, 5)]

6.2 使用 sorted() 內置函數排序

從一個可迭代對象構建一個新的排序列表,要使用sorted()內置函數。

使用格式如下所示:

sorted(iterable, * ,key=None, reverse=False)

對以上格式說明,

  • 返回值:sorted()內置函數會根據 iterable 中的項返回一個新的已排序列表。
  • 具有兩個可選參數,它們都必須指定爲關鍵字參數。
  • key: 指定帶有單個參數的函數,用於從 iterable 的每個元素中提取用於比較的鍵 (例如 key=str.lower)。 默認值爲 None (直接比較元素)。
  • reverse :爲一個布爾值。默認爲False,表示升序排序。 如果設爲 True,則每個列表元素將按反向順序(降序)比較進行排序。

舉例如下所示:

# 爲 key 參數準備調度函數
def take_second(element):
    return element[1]


list_demo = [(1, 3), (3, 5), (2, 4), (5, 1)]

print('排序前 list_demo =', list_demo)
new_list1 = sorted(list_demo, key=None)  # 升序排序。元組作爲列表的元素,排序是以元組的第一個元素進行比較。
print('元組作爲列表的元素,排序是以元組的第一個元素進行比較 list_demo =', new_list1)
new_list2 = sorted(list_demo, key=take_second)  # 升序排序。元組作爲列表的元素,排序是以元組的第二個元素進行比較。
print('元組作爲列表的元素,排序是以元組的第一個元素進行比較 list_demo =', new_list2)

運行結果:

排序前 list_demo = [(1, 3), (3, 5), (2, 4), (5, 1)]
元組作爲列表的元素,排序是以元組的第一個元素進行比較 list_demo = [(1, 3), (2, 4), (3, 5), (5, 1)]
元組作爲列表的元素,排序是以元組的第一個元素進行比較 list_demo = [(5, 1), (1, 3), (2, 4), (3, 5)]

7 文章其他地址

7.1 微信公衆號:碼農阿杰

7.2 博客園

8 參考資料

8.1 Python 3.8.2 documentation

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章