系列文章目錄
個人簡介:機電專業(yè)在讀研究生,CSDN內(nèi)容合伙人,博主個人首頁
Python入門專欄:《Python入門》歡迎閱讀,一起進步!??????
碼字不易,如果覺得文章不錯或能幫助到你學(xué)習(xí),可以點贊??收藏??評論??+關(guān)注哦!??????
導(dǎo)語
歡迎來到本篇博客!上一篇博客介紹了 Python 的變量、數(shù)據(jù)類型和操作符。本文將帶領(lǐng)你逐步入門 Python 編程語言中的列表和元組,這兩個重要的數(shù)據(jù)結(jié)構(gòu)將在你的編程旅程中發(fā)揮重要作用。
序列
在介紹列表和元組這兩種 Python 中的數(shù)據(jù)結(jié)構(gòu)前,要先了解序列。在數(shù)學(xué)里,序列也稱為數(shù)列,是指按照一定順序排列的一列數(shù),而在程序設(shè)計中,序列是一種常用的數(shù)據(jù)存儲方式,幾乎每一種程序設(shè)計語言都提供了類似的數(shù)據(jù)結(jié)構(gòu)。例如,C 語言或 Java 中的數(shù)組等。
在 Python 中序列是最基本的數(shù)據(jù)結(jié)構(gòu)。它是一塊用于存放多個值的連續(xù)內(nèi)存空間。Python 中內(nèi)置了 5 個常用的序列結(jié)構(gòu),分別是列表、元組、集合、字典和字符串。
對于這些序列結(jié)構(gòu)有以下幾個通用的操作:索引,切片,序列相加,乘法,檢查某元素是否為序列的成員,計算序列長度、最大值、最小值等。
索引
序列中的每一個元素都有一個編號,也稱為索引。這個索引是從 0 開始遞增的,即下標(biāo)為 0 表示第一個元素,下標(biāo)為 1 表示第 2 個元素,依此類推。如圖所示:
Python 的索引還可以是負數(shù)。這個索引從右向左計數(shù),也就是從最后一個元素開始計數(shù),即最后一個元素的索引值是 -1,倒數(shù)第二個元素的索引值為 -2,依此類推。如圖所示:
通過索引可以訪問序列中的任何元素。實現(xiàn)索引操作的示例代碼如下:
verse = ["圣安東尼奧馬刺","洛杉磯湖人","休斯頓火箭","金州勇士"]
print(verse[2]) # 輸出第 3 個元素
print(verse[-1]) # 輸出最后一個元素
切片
切片操作是訪問序列中元素的另一種方法,它可以訪問一定范圍內(nèi)的元素。通過切片操作可以生成一個新的序列。實現(xiàn)切片操作的示例代碼如下:
nba = ["邁克爾.喬丹","比爾.拉塞爾","卡里姆阿卜杜勒.賈巴爾","威爾特.張伯倫",
"埃爾文.約翰遜","科比.布菜恩特","蒂姆.鄧肯","勒布朗詹姆斯","拉里.伯德",
"沙奎爾.奧尼爾"]
print(nba[1:5]) # 獲取第 2 個到第 5 個元素
print(nba[0:5:2]) # 獲取第 1 個、第 3 個和第 5 個元素
print(nba[:]) # 獲取整個序列
序列相加
在 Python 中,支持兩種相同類型的序列相加操作。即將兩個序列進行連接,使用加(+)運算符實現(xiàn)。例如,將兩個列表相加,可以使用下面的代碼:
nba1 = ["史蒂芬.庫里","克萊.湯普森","馬努.吉諾比利","凱文.杜蘭特"]
nba2 = ["邁克爾.喬丹","比爾.拉塞爾","卡里姆阿卜杜勒.賈巴爾","威爾特.張伯倫",
"埃爾文.約翰遜","科比.布菜恩特","蒂姆.鄧肯","勒布朗詹姆斯","拉里.伯德",
"沙奎爾.奧尼爾"]
print (nba1 + nba2)
在進行序列相加時,相同類型的序列是指,同為列表、元組或集合等,序列中的元素類型可以不同。
乘法
在 Python 中,使用數(shù)字 n 乘以一個序列會生成新的序列。新序列的內(nèi)容為原來序列被重復(fù) n 次的結(jié)果。例如,下面的代碼,將實現(xiàn)將一個序列乘以 3 生成一個新的序列并輸出,從而達到 “重要事情說三遍” 的效果。
phone = ["華為","小米","OPPE","VIVO"]
print(phone * 3)
在進行序列的乘法運算時,還可以實現(xiàn)初始化指定長度列表的功能。例如下面的代碼,將創(chuàng)建一個長度為 5 的列表,列表的每個元素都是 None,表示什么都沒有。
emptylist = [None] * 5
print(emptylist)
檢查某個元素是否是序列的成員(元素)
在 Python 中,可以使用 in
關(guān)鍵字檢查某個元素是否是序列的成員,即檢查某個元素是否包含在該序列中,也可以使用 not in
關(guān)鍵字實現(xiàn)檢查某個元素是否不包含在指定的序列中。示例代碼如下:
nba = ["史蒂芬.庫里","克萊.湯普森","馬努.吉諾比利","凱文.杜蘭特"]
print("凱文.杜蘭特" in nba) # 將顯示 True,表示在序列中存在指定的元素
print("凱文.杜蘭特" not in nba) # 將顯示 False,表示在序列中并非不存在指定的元素
計算序列的長度、最大值和最小值
在 Python 中,提供了內(nèi)置函數(shù)計算序列的長度、最大值和最小值。分別是:使用 len()
函數(shù)計算序列的長度,即返回序列包含多少個元素;使用 max()
函數(shù)返回序列中的最大元素;使用 min()
函數(shù)返回序列中的最小元素。示例代碼如下:
num = [2,8,9,4,5]
print(len(num))
print(max(num))
print(min(num))
除了上面介紹的 3 個內(nèi)置函數(shù),Python 還提供了下表所示的內(nèi)置函數(shù):
函數(shù) | 作用 |
---|---|
list() | 將序列轉(zhuǎn)換為列表 |
str() | 將序列轉(zhuǎn)換為字符串 |
sum() | 計算元素和 |
sorted() | 對元素進行排序 |
reversed() | 反向序列中的元素 |
enumerate() | 將序列組合為一個索引序列,多用在 for 循環(huán)中 |
列表(list)
列表是 Python 中最常用的數(shù)據(jù)結(jié)構(gòu)之一,它是一個有序的、可變的序列。在形式上,列表的所有元素都放在一對中括號 “[]” 中,兩個相鄰元素間使用逗號 “,” 分隔。在內(nèi)容上,可以將整數(shù)、實數(shù)、字符串、列表、元組等任何類型的內(nèi)容放入到列表中,并且同一個列表中,元素的類型可以不同,因為它們之間沒有任何關(guān)系。
列表的創(chuàng)建和刪除
在 Python 中提供了多種創(chuàng)建列表的方法,下面分別進行介紹。
-
使用賦值運算符直接創(chuàng)建列表
同其他類型的 Python 變量一樣,創(chuàng)建列表時,也可以使用賦值運算符 “=” 直接將一個列表賦值給變量,示例代碼如下:
num = [2,8,9,4,5] python = ['優(yōu)雅','明確','簡單'] mixed = ['Python',28,"人生苦短,我用Python",["爬蟲","自動化運維","云計算","Web開發(fā)"]]
-
創(chuàng)建空列表
在 Python 中,也可以創(chuàng)建空列表,例如,要創(chuàng)建一個名稱為 emptylist 的空列表,可以使用下面的代碼:
emptylist = []
-
創(chuàng)建數(shù)值列表
在 Python 中,數(shù)值列表很常用??梢允褂?
list()
函數(shù)直接將range()
函數(shù)循環(huán)出來的結(jié)果轉(zhuǎn)換為列表。例如,創(chuàng)建一個 10~20 之間(不包括20)所有偶數(shù)的列表,可以使用下面的代碼:datalist = list(range(10,20,2))
-
刪除列表
對于已經(jīng)創(chuàng)建的列表,不再使用時,可以使用 del 語句將其刪除(在實際開發(fā)時,并不常用。因為 Python 自帶的垃圾回收機制會自動銷毀不用的列表,所以即使我們不手動將其刪除,Python 也會自動將其回收)。python = ['優(yōu)雅','明確','簡單'] del python
訪問列表元素
使用索引即可訪問列表中指定元素:
mixed = ['Python',28,"人生苦短,我用Python",["爬蟲","自動化運維","云計算","Web開發(fā)"]]
print(mixed) # 在輸出列表時,是包括左右兩側(cè)的中括號的
print(mixed[1])
print(mixed[2]) # 在輸出單個列表元素時,不包括中括號,如果是字符串,不包括左右的引號
print(mixed[:3]) # 輸出第 1 個到第 3 個列表元素
遍歷列表
遍歷列表中的所有元素是常用的一種操作,在遍歷的過程中可以完成查詢、處理等功能。下面介紹兩種常用的方法:
-
直接使用 for 循環(huán)實現(xiàn)
直接使用 for 循環(huán)遍歷列表,只能輸出元素的值,示例代碼如下:
nba = ['圣安東尼馬刺','洛杉磯湖人','金州勇士','休斯頓火箭'] print('2022年NBA四強:') for item in nba: print(item)
-
使用 for 循環(huán)和
enumerate()
函數(shù)實現(xiàn)使用 for 循環(huán)和
enumerate()
函數(shù)可以實現(xiàn)同時輸出索引值和元素內(nèi)容的功能,示例代碼如下:nba = ['圣安東尼馬刺','洛杉磯湖人','金州勇士','休斯頓火箭'] print('2022年NBA四強:') for index,item in enumerate(nba): print(index+1,item)
添加、修改和刪除列表元素
添加、修改和刪除列表元素也稱為更新列表。在實際開發(fā)時,經(jīng)常需要對列表進行更新。下面我們就分別介紹如何實現(xiàn)列表元素的添加、修改和刪除:
-
添加元素:
phone = ["華為","小米","OPPE","VIVO"] phone.append("iPhone") # 列表對象的 append() 方法用于在列表的末尾追加元素 print(phone) phone.insert(1,"榮耀") # 除了使用 append() 向列表中添加元素,還可以使用 insert() 向指定位置插入元素 print(phone) newphone = ["三星","1+"] phone.extend(newphone) # 列表對象的 extend() 方法可以將一個列表的全部元素添加到另一個列表中 print(phone)
-
修改元素
phone = ['華為', '榮耀', 'OPPO', 'OPPE', 'VIVO', 'iPhone', '三星', '1+'] phone[3] = "OPPO" # 修改列表中的元素只需要通過索引獲取該元素,然后再為其重新賦值即可 print(phone)
-
刪除元素
phone = ['華為', '榮耀', 'OPPO', 'OPPE', 'VIVO', 'iPhone', '三星', '1+'] del phone[3] # 根據(jù)索引刪除 print(phone) phone.remove("1+") # 根據(jù)元素值移除第一個匹配項 print(phone)
使用
remove()
方法刪除元素前,最好先判斷該元素是否存在,如果指定的元素不存在,將出現(xiàn)異常:phone = ['華為', '榮耀', 'OPPO', 'OPPE', 'VIVO', 'iPhone', '三星', '1+'] value = '1+' if phone.count(value)>0: # 判斷要刪除的元素是否存在 phone.remove(value) # 移除指定的元素 print(phone)
對列表進行統(tǒng)計計算
Python 的列表提供了內(nèi)置的一些函數(shù)來實現(xiàn)統(tǒng)計、計算方面的功能。如列表對象的 count()
方法可以獲取指定元素在列表中的出現(xiàn)次數(shù),列表對象的 index()
方法可以獲取指定元素在列表中首次出現(xiàn)的位置(即索引),sum()
函數(shù)用于統(tǒng)計數(shù)值列表中各元素的和。
phone = ["華為","小米","OPPE","VIVO"]
phone.count('小米') # 獲取指定元素出現(xiàn)的次數(shù)
phone.index('小米') # 獲取指定元素首次出現(xiàn)的下標(biāo)
grade = [98,99,97,100,100,96,94,89,95,100] # 10 名學(xué)生 Python 理論成績列表
total = sum(grade) # 計算總成績
print("Python 理論總成績?yōu)?",total)
對列表進行排序
在實際開發(fā)時,經(jīng)常需要對列表進行排序。Python 中提供了兩種常用的對列表進行排序的方法:使用列表對象的 sort()
方法和使用內(nèi)置的 sorted()
函數(shù)。
grade = [98,99,87,84,100,95] # 使用列表對象的 sort() 方法實現(xiàn)
grade.sort(key = None,reverse = False)
print(grade)
grade_as = sorted(grade,reverse = True) # 使用內(nèi)置的 sorted() 函數(shù)
print(grade_as)
參數(shù)說明:
- key:表示指定一個從每個列表元素中提取一個用于比較的鍵(例如,設(shè)置 “key = str.lower” 表示在排序時不區(qū)分字母大小寫)。
- reverse:可選參數(shù),如果將其值指定為 True,則表示降序排列;如果為 False,則表示升序排列。默認為升序排列。
列表對象的
sort()
方法和內(nèi)置sorted()
函數(shù)的作用基本相同,所不同的就是使用sort()
方法時,會改變原列表的元素排列順序,而使用sorted()
函數(shù)時,會建立一個原列表的副本,該副本為排序后的列表。
列表推導(dǎo)式
使用列表推導(dǎo)式可以快速生成一個列表, 或者根據(jù)某個列表生成滿足指定需求的列表。列表推導(dǎo)式通常有以下幾種常用的語法格式。
# 生成指定范圍的數(shù)值列表,如生一個包括 10 個隨機數(shù)的列表,要求數(shù)的范圍在 10-100 之間
import random # 導(dǎo)入 random 標(biāo)準(zhǔn)庫
randomnumber = [random.randint(10,100) for i in range(10)]
print("生成的隨機數(shù)為:",randomnumber)
# 根據(jù)列表生成指定需求的列表
x = list(range(0,10,1))
y = [int(var**2 + 5*var + 5) for var in x]
print(y)
# 從列表中選擇符合條件的元素組成新的列表
price = [1200,5330,2988,6200,1998,8888]
sale = [x for x in price if x>5000]
print("原列表:",price)
print("價格高于5000的:",sale)
元組(tuple)
元組是 Python 中另一個常見的數(shù)據(jù)結(jié)構(gòu),與列表相似,但是它是不可變序列。因此,元組也可以稱為不可變的列表。在形式上,元組的所有元素都放在一對 “()” 中,兩個相鄰元素間使用逗號 “,” 分隔。在內(nèi)容上,可以將整數(shù)、實數(shù)、字符串、列表、元組等任何類型的內(nèi)容放入到元組中,并且在同一個元組中,元素的類型可以不同,因為它們之間沒有任何關(guān)系。通常情況下,元組用于保存程序中不可修改的內(nèi)容。
元組的創(chuàng)建和刪除
在 Python 中提供了多種創(chuàng)建元組的方法,下面分別進行介紹。
-
使用賦值運算符直接創(chuàng)建元組
同其他類型的 Python 變量一樣,創(chuàng)建元組時,也可以使用賦值運算符 “=” 直接將一個元組賦值給變量,示例代碼如下:
num = (7,14,21,28,35,42) team = ('馬刺','火箭','勇士','湖人')
-
創(chuàng)建空元組
在 Python 中,也可以創(chuàng)建空元組,例如,要創(chuàng)建一個名稱為 emptytuple 的空元組,可以使用下面的代碼:
emptytuple = ()
-
創(chuàng)建數(shù)值元組
在 Python 中,可以使用
tuple()
函數(shù)直接將range()
函數(shù)循環(huán)出來的結(jié)果轉(zhuǎn)換為數(shù)值元組。例如,創(chuàng)建一個 10~20 之間(不包括20)所有偶數(shù)的元組,可以使用下面的代碼:tuple(range(10,20,2))
-
刪除元組
對于已經(jīng)創(chuàng)建的元組,不再使用時,可以使用 del 語句將其刪除(在實際開發(fā)時,并不常用。因為 Python 自帶的垃圾回收機制會自動銷毀不用的元組,所以即使我們不手動將其刪除,Python 也會自動將其回收)。
python = ('優(yōu)雅','明確','簡單') del python
訪問元組元素
使用索引即可訪問元組中指定元素:
mixed = ('Python',28,"人生苦短,我用Python",["爬蟲","自動化運維","云計算","Web開發(fā)"])
print(mixed) # 在輸出元組時,是包括左右兩側(cè)的小括號的
print(mixed[1])
print(mixed[2]) # 在輸出單個元組元素時,不包括小括號,如果是字符串,不包括左右的引號
print(mixed[:3]) # 輸出第 1 個到第 3 個元組元素
遍歷元組
同列表一樣,元組也可以使用 for 循環(huán)進行遍歷。
修改元組元素
元組是不可變序列,所以不能對它的單個元素值進行修改。但是元組也不是完全不能修改。我們可以對元組進行重新賦值。例如,下面的代碼是允許的:
country = ('中國','美國','日本','韓國','英國')
country = ('中國','法國','日本','韓國','英國')
print(country) # 對元組重新幅值
另外,還可以對元組進行連接組合。例如,可以使用下面的代碼實現(xiàn)在已經(jīng)存在的元組結(jié)尾處添加一個新元組。
country = ('中國','法國','日本','韓國','英國')
country2 = ('俄羅斯','印度')
print(country + country2)
country3 = ('美國',)
print(country + country2 + country3) # 進行元組連接
如果要連接的元組只有一個元素時,一定不要忘記后面的逗號
元組推導(dǎo)式
使用元組推導(dǎo)式可以快速生成一個元組,它的表現(xiàn)形式和列表推導(dǎo)式類似,只是將列表推導(dǎo)式中的中括號 “[]” 修改為小括號 “()"。
# 生成指定范圍的數(shù)值元組,如生一個包括 10 個隨機數(shù)的元組,要求數(shù)的范圍在 10-100 之間
import random # 導(dǎo)入 random 標(biāo)準(zhǔn)庫
randomnumber = (random.randint(10,100) for i in range(10))
print("生成的隨機數(shù)為:",randomnumber)
# 根據(jù)元組生成指定需求的元組
x = tuple(range(0,10,1))
y = (int(var**2 + 5*var + 5) for var in x)
print(y)
# 從元組中選擇符合條件的元素組成新的元組
price = (1200,5330,2988,6200,1998,8888)
sale = (x for x in price if x>5000)
print("原列表:",price)
print("價格高于5000的:",sale)
執(zhí)行結(jié)構(gòu)如下:
從上面的執(zhí)行結(jié)果中,可以看出使用元組推導(dǎo)式生成的結(jié)果并不是一個元組或者列表,而是一個生成器對象,這一點和列表推導(dǎo)式是不同的,需要使用該生成器對象可以將其轉(zhuǎn)換為元組或者列表。其中,轉(zhuǎn)換為元組需要使用 tuple()
函數(shù),而轉(zhuǎn)換為列表則需要使用 list()
函數(shù)。
因此,可將代碼改寫如下:
# 生成指定范圍的數(shù)值元組,如生一個包括 10 個隨機數(shù)的元組,要求數(shù)的范圍在 10-100 之間
import random # 導(dǎo)入 random 標(biāo)準(zhǔn)庫
randomnumber = (random.randint(10,100) for i in range(10))
randomnumber = tuple(randomnumber)
print("生成的隨機數(shù)為:",randomnumber)
# 根據(jù)元組生成指定需求的元組
x = tuple(range(0,10,1))
y = (int(var**2 + 5*var + 5) for var in x)
y = tuple(y)
print(y)
# 從元組中選擇符合條件的元素組成新的元組
price = (1200,5330,2988,6200,1998,8888)
sale = (x for x in price if x>5000)
sale = tuple(sale)
print("原列表:",price)
print("價格高于5000的:",sale)
要使用通過元組推導(dǎo)器生成的生成器對象,還可以直接通過 for 循環(huán)遍歷或者直接使用 __ next()__
方法進行遍歷。
例如,通過生成器推導(dǎo)式生成一個包含 3 個元素的生成器對象 number,然后調(diào)用 3 次 __next()__
方法輸出每個元素,再將生成器對 number 轉(zhuǎn)換為元組輸出,代碼如下:
number = (i for i in range(3))
print(number.__next__()) # 輸出第 1 個元素
print(number.__next__()) # 輸出第 2 個元素
print(number.__next__()) # 輸出第 3 個元素
number = tuple(number) # 轉(zhuǎn)換為元組
print("轉(zhuǎn)換后:",number)
執(zhí)行結(jié)果如下:
再如,通過生成器推導(dǎo)式生成一個包括 4 個元素的生成器對象 number,然后應(yīng)用 for 循環(huán)遍歷該生成器對象,并輸出每一個元素的值,最后再將其轉(zhuǎn)換為元組輸出,代碼如下:
number = (i for i in range(4)) # 生成生成器對象
for i in number: # 遍歷生成器對象
print(i,end = " ") # 輸出每個元素的值
print(tuple(number)) # 轉(zhuǎn)換為元組輸出
執(zhí)行結(jié)果如下:
從上面的兩個示例中可以看出,無論通過哪種方法遍歷后,如果再想使用該生成器對象,都必須重新創(chuàng)建一個生成器對象,因為遍歷后原生成器對象已經(jīng)不存在了。
元組和列表的區(qū)別
-
列表屬于可變序列,它的元素可隨意修改或刪除;而元組屬于不可變序列,其中的元素不可以修改,除非整體替換
-
列表可以使用
append()
,extend()
,insert()
,remove()
,pop()
等方法實現(xiàn)添加和修改列表元素;而元組則沒有這幾個方法,因為不能向元組中添加和修改元素,同樣也不能刪除元素 -
列表可以使用切片訪問和修改列表中的元素;元組也支持切片,但只支持通過切片訪問,不支持修改
-
元組比列表的訪問和處理速度快,如果只需要對其中的元素進行訪問,而不進行任何修改,建議使用元組
-
列表不能作為字典的鍵,而元組則可以
結(jié)語
在本篇博客中,我們介紹了 Python 中的列表和元組。列表是有序的、可變的集合,可以存儲不同類型的元素,并且支持添加、插入、刪除等操作。而元組是不可變的,一旦創(chuàng)建就不能修改其中的元素,通常用于存儲多個值的打包和保護數(shù)據(jù)的完整性。文章來源:http://www.zghlxwxcb.cn/news/detail-606377.html
這些是 Python 編程中非常常用的數(shù)據(jù)結(jié)構(gòu),對于初學(xué)者來說,掌握列表和元組的基礎(chǔ)知識是非常重要的。希望本篇博客對你理解列表和元組有所幫助。祝你在學(xué)習(xí) Python 的過程中取得成功!文章來源地址http://www.zghlxwxcb.cn/news/detail-606377.html
到了這里,關(guān)于Python零基礎(chǔ)入門(五)——超詳細的列表和元組介紹的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!