您的“關注”和“點贊”,是信任,是認可,是支持,是動力…
如意見相佐,可留言。
本人必將竭盡全力試圖做到準確和全面,終其一生進行修改補充更新。
文章目錄
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
:要添加元素的列表。obj
:obj
表示要添加到列表末尾的數據。要注意的是:會與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
到末尾的元素。start
和end
可以都不寫,表示檢索整個列表;都寫,表示檢索start
和end
(不包括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
在索引值 0 到 3 之間檢索元素 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
表示直接對列表項排序而不計算一個單獨的鍵值。reverse
:reverse
爲一個布爾值。默認爲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)]