Python學習之列表和元組的使用詳解
列表和元組簡介
如果說在 Python 語言中找一個最優(yōu)秀的數(shù)據(jù)類型,那無疑是列表,如果要在推薦一個,那我選擇元組,本篇博客我們的重心會放在列表上,元組可以看成不能被修改的列表,所以作為贈品 進行學習即可。
列表是一種非常靈活的數(shù)據(jù)結(jié)構(gòu),可以彌補前文字符串類型的很多不足。
正式學習前,還需要記住兩個英文單詞,列表(list),元組 (tuple)。
列表學習要點
先看一遍列表定義:
列表是可變序列,也是一種可存儲任意數(shù)據(jù)類型的容器,用中括號([]
)表示開始和結(jié)束,內(nèi)部各元素使用英文逗號(,
)分隔,每個元素都可稱為項目,并且每個元素都有一個索引,也被稱為下標。
列表的聲明語法
聲明一個列表,可以參考下述幾種格式。
使用空中括號 [] 聲明一個空列表
my_list = [] print(my_list)
聲明包含一個元素的列表
my_list = [1] print(my_list)
聲明包含多個元素的列表
my_list = [1,2] print(my_list)
聲明包含多個不同數(shù)據(jù)類型元素的列表
my_list = [1,'a',True] print(my_list)
聲明一個列表中包含列表
my_list = [1,['a'],[True,1,1]] print(my_list)
列表的讀取
讀取列表中最重要的概念是下標,也叫做位置或者索引。下標從 0 開始計數(shù),即列表內(nèi)第一項元素的索引是 0,例如下述代碼,讀取數(shù)字 2。
my_list = [1,2,3,4,5] print(my_list[1]) # 數(shù)字2所在的下標為1
列表操作
列表是一個動態(tài)容器,其支持對其元素的增加,刪除,修改,查詢,合并等操作,用到的都是字典對象的方法,基本操作的方法名如下所示:
append()
:末尾追加元素;extend()
:末尾追加列表,也可以理解為兩個列表合并;insert()
:在指定位置插入元素;copy()
:列表復制;clear()
:清空列表;count()
:統(tǒng)計列表指定元素個數(shù);pop()
:刪除并返回指定下標對應的元素;remove()
:刪除列表中指定元素;index()
:獲取指定元素的下標;reverse()
:反轉(zhuǎn)元素;sort()
:對列表元素進行排序。
列表元素添加方法
從上述清單中,可以查看到列表追加元素,有兩種辦法可以實現(xiàn),其一是使用 append()
方法,其二是使用 insert()
方法,示例代碼如下所示:
my_list = [1,2,3,4,5] my_list.append(888) my_list.insert(1,666) print(my_list)
對比一下上述兩個方法的差異,可以看到 append()
僅能在里列表末尾追加元素,而 insert()
方法可以在任意位置插入元素,即 insert()
方法的第一個參數(shù)為索引,表示插入位置。
列表元素查找方法
在列表中查找某一元素,使用 index()
方法實現(xiàn),該方法的語法格式如下所示:
my_list.index(value,[start[,stop]])
其中 my_list
是待查找目標列表,value
表示待查找的值,start
和 stop
為可選參數(shù),表示開始查找的索引值和結(jié)束查找的索引值,該方法當查找到元素后,會返回第一個找到的元素索引位置,例如下述代碼,會返回 3
。
my_list = [1,2,3,4,5] ret = my_list.index(4) print(ret)
如果該方法沒有在目標列表中找到元素,會報錯,錯誤類型為 ValueError
。
除 index()
方法外,列表的讀取其實也是元素查找方式,例如讀取下標 2 的元素,代碼如下:
my_list = [1,2,3,4,5] ret = my_list[2] print(ret)
還可以使用成員運算符 in
,對列表進行判斷,關(guān)于成員操作符的更多知識,后期總結(jié)運算符的時候,會詳細說明。以下代碼會返回 True
,即表示數(shù)字 2 在列表中。
my_list = [1,2,3,4,5] ret = 2 in my_list print(ret)
在列表中還有一個重要知識點,即列表切片,學習該知識點需要先牢牢掌握列表按索引讀取相關(guān)語法,切片的語法格式如下:
my_list = [1,2,3,4,5] ret = my_list[1:3:2] print(ret)
可以看到上述第二行代碼,在原列表讀取的規(guī)則之上,格式變?yōu)榱?[1:3:2]
,將其轉(zhuǎn)換為中文語法說明如下所示:
my_list[起始索引:結(jié)束索引:步長]
使用切片的時候,英文冒號不能缺少,起始索引為必選項,結(jié)束索引和步長為可選項。
如果理解困難,最好的辦法就是反復用代碼校驗。
# 缺省結(jié)束索引,默認獲取到列表結(jié)尾元素 my_list = [1,2,3,4,5,6,7,8,9,10] ret = my_list[1:] print(ret) # 輸出 [2, 3, 4, 5, 6, 7, 8, 9, 10] # 缺少步長,默認按照索引+1解決,同時不包含結(jié)束索引代表的元素 my_list = [1,2,3,4,5,6,7,8,9,10] ret = my_list[1:5] print(ret) # 輸出 [2, 3, 4, 5] # 步長設置為2,表示索引每次+2 my_list = [1,2,3,4,5,6,7,8,9,10] ret = my_list[1:6:2] print(ret) # 輸出 [2, 4, 6]
上述代碼如何理解已經(jīng)在注釋中進行說明,重點要掌握的切片知識點整理如下:
一首打油詩送給大家~
切片不能丟冒號 結(jié)束步長可不要 默認索引都加一 左閉右開要牢記
列表元素的修改和刪除
前文已經(jīng)掌握了列表的讀取,將讀取到的元素重新賦值就是列表的修改,例如下述代碼。
my_list = [1,2,3,4,5,6,7,8,9,10] my_list[1] = 666 print(my_list)
列表元素刪除 在 Python 中,提出了多種列表元素刪除的方式,本小節(jié)學習三個列表元素刪除的方法,即 clear()
,pop()
,remove()
,除此之外還可以使用 del()
函數(shù)對列表元素進行刪除。
my_list = [1,2,3,4,5,6,7,8,9,10] my_list[1] = 666 my_list.clear() # 列表清空 print(my_list)
使用 pop()
方法刪除列表元素,默認從尾部刪除,并返回被刪除的元素。
my_list = [1,2,3,4,5,6,7,8,9,10] my_list[1] = 666 ret = my_list.pop() print(my_list) # 刪除最后一項 print(ret) # 返回被刪除的元素
pop()
方法中可以傳遞一個 index
值,該值表示下標值,即刪除指定位置的元素,與之對應的是 remove()
方法的參數(shù),該值表示待刪除的目標元素,例如在列表中刪除元素 5,使用的代碼如下:
my_list = [1,2,3,4,5,6,7,8,9,10] my_list[1] = 666 ret = my_list.remove(5) print(my_list) print(ret)
測試之后,可以發(fā)現(xiàn) remove()
方法無返回值,并且該方法只刪除第一個匹配到的元素,也就是當列表中有多個目標元素時,只有最先匹配到的元素被刪除。
del()
函數(shù)可以刪除列表中指定元素,也可以直接刪除列表對象,代碼如下:
# 刪除索引位置為5的元素 my_list = [1,2,3,4,5,6,7,8,9,10] my_list[1] = 666 del(my_list[5]) print(my_list) # 刪除整個列表對象 my_list = [1,2,3,4,5,6,7,8,9,10] my_list[1] = 666 del my_list print(my_list)
列表元素合并
使用 extend()
方法可以將列表進行合并:
my_list1 = [1,2,3] my_list2 = [666,777,888] my_list1.extend([666,777,888]) print(my_list1)
注意 extend()
方法不會生成新的列表。
列表合并也可以使用加號(+
) 實現(xiàn),該語法會產(chǎn)生一個新的列表。
my_list1 = [1,2,3] my_list2 = [666,777,888] my_list = my_list1 + my_list2 print(my_list)
列表元素順序變化
列表排序用到的方法是 sort()
,該方法默認按照 ASCII 進行增序或者減序排列,測試代碼如下所示:
my_list = [4,1,2,6,7,3,8,12,10] my_list.sort() print(my_list)
在 sort()
方法中也有 2 個參數(shù),格式如下:
my_list.sort(key=None,reverse=False)
參數(shù) key
為可選參數(shù),可以傳入一個函數(shù)名,該函數(shù)會作用與列表中的每一項元素,例如將列表中每一項元素都轉(zhuǎn)換為小寫字母。
my_list = ['ABC','CDS','Juejin','YUE'] my_list.sort(key=str.lower) print(my_list)
sort()
方法會對原列表進行排序,如果想生成一個新列表,可以使用 sorted()
函數(shù),代碼如下:
my_list = ['ABC','CDS','Juejin','YUE'] ret = sorted(my_list) print(ret)
除此之外,還可以使用 reverse()
方法。
my_list = ['ABC','CDS','Juejin','YUE'] my_list.reverse() print(my_list)
元組學習要點
元組定義與列表基本一致,只需要做好如下區(qū)分即可。
- 元組不能對其包含的元素進行修改,即元組不可變;
- 元組用小括號(
()
)表示。
再次進行簡單總結(jié):
元組是不可變序列,也是可以包含任意數(shù)據(jù)類型的容器,用小括號(()
)表示,元素之間用逗號(,
)分隔 。一定要注意的就是不可變序列,不可變的含義是不能對元組進行增加,修改,刪除,位置變換等操作。
元組基本知識
聲明一個元組
my_tuple = () print(my_tuple) print(type(my_tuple))
聲明一個只包含 1 個值的元組,要求必須帶一個逗號,否則會按照整數(shù)處理。
my_tuple = (1,) print(my_tuple) print(type(my_tuple))
聲明包含多個值的元組:
my_tuple = (1,2,3,4,5,6,[1]) print(my_tuple) print(type(my_tuple))
元組的基本操作
由于元組對象的方法使用與列表一致,接下來僅對元組進行羅列。
count()
:統(tǒng)計元組中元素個數(shù);index()
:返回指定元素的下標。
其余可作用于元組的內(nèi)置函數(shù)如下所示:
len()
:獲取元組元素個數(shù);max()
:返回元組中最大值;min()
:返回最小值;tuple()
:將列表轉(zhuǎn)換為元組;type()
:返回對象類型;del()
:刪除整個元組對象,注意不能刪除元組內(nèi)元素;sum()
:求和。
以上就是Python學習之列表和元組的使用詳解的詳細內(nèi)容,更多關(guān)于Python列表 元組的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
pytorch中 gpu與gpu、gpu與cpu 在load時相互轉(zhuǎn)化操作
這篇文章主要介紹了pytorch模型載入之gpu和cpu互轉(zhuǎn)操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05Python version 2.7 required, which was not found in the regi
這篇文章主要介紹了安裝PIL庫時提示錯誤Python version 2.7 required, which was not found in the registry問題的解決方法,需要的朋友可以參考下2014-08-08