深入了解python列表(LIST)
Python 內(nèi)置的四種常用數(shù)據(jù)結(jié)構(gòu):列表(list)、元組(tuple)、字典(dict)以及集合(set)。
這四種數(shù)據(jù)結(jié)構(gòu)一但都可用于保存多個(gè)數(shù)據(jù)項(xiàng),這對(duì)于編程而言是非常重要的,因?yàn)槌绦虿粌H需要使用單個(gè)變量來(lái)保存數(shù)據(jù),還需要使用多種數(shù)據(jù)結(jié)構(gòu)來(lái)保存大量數(shù)據(jù),而列表、元組、字典和集合就可滿足保存大量數(shù)據(jù)的需求。
列表(list)和元組(tuple)比較相似,它們都按順序保存元素,每個(gè)元素都有自己的索引,因此列表和元組都可通過索引訪問元素。二者的區(qū)別在于元組是不可修改的,但列表是可修改的。
字典(dict)和集合(set)類似,它們存儲(chǔ)的數(shù)據(jù)都是無(wú)序的,其中字典是用 key-value 的形式保存數(shù)據(jù)
python 序列詳解
所謂序列,指的是一塊可存放多個(gè)值的連續(xù)內(nèi)存空間,這些值按一定順序排列,可通過每個(gè)值所在位置的編號(hào)(稱為索引)訪問它們。
無(wú)論是采用正索引值,還是負(fù)索引值,都可以訪問序列中的任何元素。
注意,在使用負(fù)值作為列序中各元素的索引值時(shí),是從 -1 開始,而不是從 0 開始。
[root@kube list]# cat demo1.py str="Py序列化詳解" print(str[0],"---",str[-6]) print(str[5],"---",str[-1]) [root@kube list]# py demo1.py P --- y 詳 --- 解 [root@kube list]#
序列切片
切片操作是訪問序列中元素的另一種方法,它可以訪問一定范圍內(nèi)的元素,通過切片操作,可以生成一個(gè)新的序列。
序列實(shí)現(xiàn)切片操作的語(yǔ)法格式如下:
sname[start : end : step]
其中,各個(gè)參數(shù)的含義分別是:
sname:表示序列的名稱;
start:表示切片的開始索引位置(包括該位置),此參數(shù)也可以不指定,會(huì)默認(rèn)為 0,也就是從序列的開頭進(jìn)行切片;
end:表示切片的結(jié)束索引位置(不包括該位置),如果不指定,則默認(rèn)為序列的長(zhǎng)度;
step:表示在切片過程中,隔幾個(gè)存儲(chǔ)位置(包含當(dāng)前位置)取一次元素,也就是說(shuō),如果 step 的值大于 1,則在進(jìn)行切片去序列元素時(shí),會(huì)“跳躍式”的取元素。如果省略設(shè)置 step 的值,則最后一個(gè)冒號(hào)就可以省略。
[root@kube list]# cat demo2.py str="py序列切片" print(str[:0]) #end 為0 表示結(jié)束索引位置但是不包括該位置,因此為空 print(str[:1]) print(str[:2]) print(str[1:2]) num="123456789" print(num[1:5:2]) #在1-5 的區(qū)間中隔兩位取一個(gè)值 [root@kube list]# py demo2.py p py y 24 [root@kube list]#
序列相加
Python 中,支持兩種類型相同的序列使用“+”運(yùn)算符做相加操作,它會(huì)將兩個(gè)序列進(jìn)行連接,但不會(huì)去除重復(fù)的元素。
里所說(shuō)的“類型相同”,指的是“+”運(yùn)算符的兩側(cè)序列要么都是序列類型,要么都是元組類型,要么都是字符串。
root@kube list]# cat demo3.py print("你好"+"我好"+"dajiahao") [root@kube list]# py demo3.py 你好我好dajiahao [root@kube list]#
序列相乘
Python 中,使用數(shù)字 n 乘以一個(gè)序列會(huì)生成新的序列,其內(nèi)容為原來(lái)序列被重復(fù) n 次的結(jié)果
[root@kube list]# cat demo3.py str="你好"+"我好"+"dajiahao" print(str*3) [root@kube list]# py demo3.py 你好我好dajiahao你好我好dajiahao你好我好dajiahao [root@kube list]#
檢查元素是否包含在序列中
Python 中,可以使用 in 關(guān)鍵字檢查某元素是否為序列的成員,其語(yǔ)法格式為:
value in sequence
和 in 關(guān)鍵字用法相同,但功能恰好相反的,還有 not in 關(guān)鍵字,它用法檢查某個(gè)元素是否不包含在指定的序列中
value not in sequence
[root@kube list]# cat demo4.py #coding:utf-8 str="test.com.cn" print('e' in str) print('e' not in str) [root@kube list]# py demo4.py True False [root@kube list]#
和序列相關(guān)的內(nèi)置函數(shù)
Python提供了幾個(gè)內(nèi)置函數(shù)(表 3 所示),可用于實(shí)現(xiàn)與序列相關(guān)的一些常用操作
表 3 序列相關(guān)的內(nèi)置函數(shù)
函數(shù) | 功能 |
len() | 計(jì)算序列的長(zhǎng)度,即返回序列中包含多少個(gè)元素。 |
max() | 找出序列中的最大元素。注意,對(duì)序列使用 sum() 函數(shù)時(shí),做加和操作的必須都是數(shù)字,不能是字符或字符串,否則該函數(shù)將拋出異常,因?yàn)榻忉屍鳠o(wú)法判定是要做連接操作(+ 運(yùn)算符可以連接兩個(gè)序列),還是做加和操作。 |
min() | 找出序列中的最小元素。 |
list() | 將序列轉(zhuǎn)換為列表 |
str() | 將序列轉(zhuǎn)換為字符串。 |
sum() | 計(jì)算元素和。 |
sorted() | 對(duì)元素進(jìn)行排序。 |
reversed() | 反向序列中的元素。 |
enumerate() | 將序列組合為一個(gè)索引序列,多用在for循環(huán)中。 |
[root@kube list]# cat demo5.py str="test.com.cn" print(max(str)) print(min(str)) print(len(str)) print(list(str)) [root@kube list]# py demo5.py t . 11 ['t', 'e', 's', 't', '.', 'c', 'o', 'm', '.', 'c', 'n'] [root@kube list]#
python list 列表
Python 中沒有數(shù)組,但是加入了更加強(qiáng)大的列表。如果把數(shù)組看做是一個(gè)集裝箱,那么 Python 的列表就是一個(gè)工廠的倉(cāng)庫(kù)。
從形式上看,列表會(huì)將所有元素都放在一對(duì)中括號(hào) [] 中,相鄰元素之間用逗號(hào)分隔,格式中,element1~elementn 表示列表中的元素,個(gè)數(shù)沒有限制,只要是 Python 支持的數(shù)據(jù)類型就可以。如下所示
[element1,element2,element3,...,elementn]
[root@kube list]# cat demo6.py lt=['c.test.com',1,[2,3],2.34,'aa'] print(lt) print(type(lt)) [root@kube list]# py demo6.py ['c.test.com', 1, [2, 3], 2.34, 'aa'] <class 'list'> [root@kube list]#
創(chuàng)建列表
[root@kube list]# cat demo7.py lt=[1,'x.test.com',[2,3]] # = 號(hào)賦值使用 [] 括起來(lái) str="1234test" print(type(lt)) print(type(str)) lt2=list(str) #使用 list() 函數(shù)轉(zhuǎn)換 print(lt2) print(type(lt2)) [root@kube list]# py demo7.py <class 'list'> <class 'str'> ['1', '2', '3', '4', 't', 'e', 's', 't'] <class 'list'> [root@kube list]#
python 訪問和刪除列表
[root@kube list]# cat demo8.py vol=[1,'test.com',[3,4,5],44,'fff','ee'] print(vol[:1]) print(vol[:2]) print(vol[2:4]) del vol print(vol) [root@kube list]# py demo8.py [1] [1, 'test.com'] [[3, 4, 5], 44] Traceback (most recent call last): File "demo8.py", line 6, in <module> print(vol) NameError: name 'vol' is not defined [root@kube list]#
python list 列表添加元素的三種方法
append() 方法用于在列表的末尾追加元素,該方法的語(yǔ)法格式如下:
listname.append(obj)
當(dāng)然,如果希望不將被追加的列表或元組當(dāng)成一個(gè)整體,而是只追加列表中的元素,則可使用列表提供的 extend() 方法。extend()方法的語(yǔ)法格式如下:
listname.extend(obj)
如果希望在列表中間增加元素,則可使用列表的 insert() 方法,此方法的語(yǔ)法格式為:
listname.insert(index , obj)
其中,index 參數(shù)指的是將元素插入到列表中指定位置處的索引值。
使用 insert() 方法向列表中插入元素,和 append() 方法一樣,無(wú)論插入的對(duì)象是列表還是元組,都只會(huì)將其整體視為一個(gè)元素。
[root@kube list]# cat demo9.py a_list=['test.com.cn',2,[2,'a']] a_list.append('b') print(a_list) a_list.extend([9,8,7]) print(a_list) a_list.insert(4,'MM') print(a_list) [root@kube list]# py demo9.py ['test.com.cn', 2, [2, 'a'], 'b'] ['test.com.cn', 2, [2, 'a'], 'b', 9, 8, 7] ['test.com.cn', 2, [2, 'a'], 'b', 'MM', 9, 8, 7] [root@kube list]#
python list 列表刪除元素的三種方法
在列表中刪除元素,主要分為以下 3 種應(yīng)用場(chǎng)景:
1 根據(jù)目標(biāo)元素所在位置的索引值進(jìn)行刪除,可使用 del 語(yǔ)句;
2 根據(jù)元素的值進(jìn)行刪除,可使用列表(list類型)提供的 remove() 方法;
3 將列表中所有元素全部刪除,可使用列表(list類型)提供的 clear() 方法。
python list 修改元素
列表的元素相當(dāng)于變量,因此程序可以對(duì)列表的元素賦值,這樣即可修改列表的元素
slice 分片同樣可以使用
[root@kube list]# cat demo11.py a_list=list(range(0,10)) #list() 函數(shù)轉(zhuǎn)換為列表 print(a_list) a_list[2]='a' #替換序列為2 的值 print(a_list) a_list[-1]='ffff' #替換序列為-1 的值 print(a_list) a_list[3:4]=['s','d'] #替換分片3-4 的值 print(a_list) a_list[4:6]=[] #把 4-6 的值替換為空 print(a_list) a_list[1:3]='test' #對(duì)列表使用 slice 語(yǔ)法賦值時(shí),不能使用單個(gè)值;如果使用字符串賦值,Python 會(huì)自動(dòng)把字符串當(dāng)成序列處理,其中每個(gè)字符都是一個(gè)元素。 print(a_list) a_list[2:6:2]=['MM','NN'] #在使用 slice 語(yǔ)法賦值時(shí),也可指定 step 參數(shù)。但如果指定了 step 參數(shù),則要求所賦值的列表元素個(gè)數(shù)與所替換的列表元素個(gè)數(shù)相等 print(a_list) [root@kube list]# py demo11.py [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 'a', 3, 4, 5, 6, 7, 8, 9] [0, 1, 'a', 3, 4, 5, 6, 7, 8, 'ffff'] [0, 1, 'a', 's', 'd', 4, 5, 6, 7, 8, 'ffff'] [0, 1, 'a', 's', 5, 6, 7, 8, 'ffff'] [0, 't', 'e', 's', 't', 's', 5, 6, 7, 8, 'ffff'] [0, 't', 'MM', 's', 'NN', 's', 5, 6, 7, 8, 'ffff'] [root@kube list]#
python list 常用方法
除前面的增加元素、刪除元素、修改元素方法之外,列表還包含了一些常用的方法。
count() 方法,此方法用于統(tǒng)計(jì)列表中某個(gè)元素出現(xiàn)的次數(shù)
listname.count(obj)
index() 方法用于定位某個(gè)元素在列表中出現(xiàn)的位置(也就是索引),如果該元素沒有出現(xiàn),則會(huì)引發(fā) ValueError 錯(cuò)誤。此方法的基本語(yǔ)法格式為
listname.index(obj,start,end)
同 count() 方法不同,index() 方法還可傳入 start、end 參數(shù),用于在列表的指定范圍內(nèi)搜索元素。
pop() 方法會(huì)移除列表中指定索引處的元素,如果不指定,默認(rèn)會(huì)移除列表中最后一個(gè)元素。該方法的基本語(yǔ)法格式為:
listname.pop(index)
reverse() 方法會(huì)將列表中所有元素反向存放。該方法的基本語(yǔ)法格式為:
listname.reverse()
sort() 方法用于對(duì)列表元素進(jìn)行排序,排序后原列表中的元素順序會(huì)方發(fā)生改變。sort() 方法的語(yǔ)法格式如下:
listname.sort(key=None, reserse=False)
可以看到,和其他方法不同,此方法中多了 2 個(gè)參數(shù),它們的作用分別是:
key 參數(shù)用于指定從每個(gè)元素中提取一個(gè)用于比較的鍵。例如,使用此方法時(shí)設(shè)置 key=str.lower 表示在排序時(shí)不區(qū)分字母大小寫。
reverse 參數(shù)用于設(shè)置是否需要反轉(zhuǎn)排序,默認(rèn) False 表示從小到大排序;如果將該參數(shù)設(shè)為 True,將會(huì)改為從大到小排序。
下面代碼示范了使用列表作為“?!钡氖纠?/p>
stack = [] # 向棧中“入棧”3個(gè)元素 stack.append("fkit") stack.append("crazyit") stack.append("Charlie") print(stack) # ['fkit', 'crazyit', 'Charlie'] # 第一次出棧:最后入棧的元素被移出棧 print(stack.pop()) print(stack) # ['fkit', 'crazyit'] # 再次出棧 print(stack.pop()) print(stack) # ['fkit']
python range 快速初始化數(shù)字列表
ython range() 函數(shù)能夠輕松地生成一系列的數(shù)字。例如,可以像如下這樣使用 range() 來(lái)打印一系列數(shù)字:
[root@kube list]# cat demo14.py #coding:utf-8 seq=[] for i in range(1,4): #求1-3 的乘積 vol=i**2 seq.append(vol) print(seq) print('----------------------------') print(type([1,2,3,4])) #range 的type 類型的轉(zhuǎn)化 print(type(range(1,5))) [root@kube list]# py demo14.py [1, 4, 9] ---------------------------- <class 'list'> <class 'range'> [root@kube list]#
python list 列表實(shí)現(xiàn)棧和隊(duì)列
隊(duì)列和棧是兩種數(shù)據(jù)結(jié)構(gòu),其內(nèi)部都是按照固定順序來(lái)存放變量的,二者的區(qū)別在于對(duì)數(shù)據(jù)的存取順序:
隊(duì)列是,先存入的數(shù)據(jù)最先取出,即“先進(jìn)先出”。
棧是,最后存入的數(shù)據(jù)最先取出,即“后進(jìn)先出”。
考慮到 list 類型數(shù)據(jù)本身的存放就是有順序的,而且內(nèi)部元素又可以是各不相同的類型,非常適合用于隊(duì)列和棧的實(shí)現(xiàn)。本節(jié)將演示如何使用 list 類型變量來(lái)實(shí)現(xiàn)隊(duì)列和棧。
python list 列表實(shí)現(xiàn)
使用 list 列表模擬隊(duì)列功能的實(shí)現(xiàn)方法是,定義一個(gè) list 變量,存入數(shù)據(jù)時(shí)使用 insert() 方法,設(shè)置其第一個(gè)參數(shù)為 0,即表示每次都從最前面插入數(shù)據(jù);讀取數(shù)據(jù)時(shí),使用 pop() 方法,即將隊(duì)列的最后一個(gè)元素彈出。
[root@kube list]# cat demo15.py #coding:utf-8 #定義一個(gè)空列表,當(dāng)做隊(duì)列 queue = [] #向列表中插入元素 queue.insert(0,"one") queue.insert(0,"two") queue.insert(0,"three") print(queue) print('取第一個(gè)元素:',queue.pop()) #pop() 默認(rèn)取隊(duì)列最后一位 print('取第二個(gè)元素:',queue.pop()) print('取第三個(gè)元素:',queue.pop()) [root@kube list]# py demo15.py ['three', 'two', 'one'] 取第一個(gè)元素: one 取第二個(gè)元素: two 取第三個(gè)元素: three [root@kube list]#
python 實(shí)現(xiàn)棧
使用 list 列表模擬棧功能的實(shí)現(xiàn)方法是,使用 append() 方法存入數(shù)據(jù);使用 pop() 方法讀取數(shù)據(jù)。append() 方法向 list 中存入數(shù)據(jù)時(shí),每次都在最后面添加數(shù)據(jù),這和前面程序中的 insert() 方法正好相反。
[root@kube list]# cat demo16.py #coding:utf-8 #定義一個(gè)list 當(dāng)棧 stack = [] stack.append('one') stack.append('two') stack.append('three') print(stack) print('取第一個(gè)元素:',stack.pop()) print('取第二個(gè)元素:',stack.pop()) print('取第三個(gè)元素:',stack.pop()) [root@kube list]# py demo16.py ['one', 'two', 'three'] 取第一個(gè)元素: three 取第二個(gè)元素: two 取第三個(gè)元素: one [root@kube list]#
collections模塊實(shí)現(xiàn)棧和隊(duì)列
queueAndStack = deque() queueAndStack.append(1) queueAndStack.append(2) queueAndStack.append("hello") print(list(queueAndStack)) #實(shí)現(xiàn)隊(duì)列功能,從隊(duì)列中取一個(gè)元素,根據(jù)先進(jìn)先出原則,這里應(yīng)輸出 1 print(queueAndStack.popleft()) #實(shí)現(xiàn)棧功能,從棧里取一個(gè)元素,根據(jù)后進(jìn)先出原則,這里應(yīng)輸出 hello print(queueAndStack.pop()) #再次打印列表 print(list(queueAndStack))
以上就是深入了解python列表(LIST)的詳細(xì)內(nèi)容,更多關(guān)于Python(list)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- 解決python列表list中的截取問題
- Python3 列表list合并的4種方法
- python中列表(list)和元組(tuple)的深入講解
- Python列表排序 list.sort方法和內(nèi)置函數(shù)sorted用法
- Python 列表(List)的底層實(shí)現(xiàn)原理分析
- Python 找出英文單詞列表(list)中最長(zhǎng)單詞鏈
- Python Pandas list列表數(shù)據(jù)列拆分成多行的方法實(shí)現(xiàn)
- python 解決mysql where in 對(duì)列表(list,,array)問題
- Python將二維列表list的數(shù)據(jù)輸出(TXT,Excel)
- python的列表List求均值和中位數(shù)實(shí)例
- Python3列表List入門知識(shí)附實(shí)例
- Python列表list操作相關(guān)知識(shí)小結(jié)
- 基于python的列表list和集合set操作
- Python List列表對(duì)象內(nèi)置方法實(shí)例詳解
- Python列表list常用內(nèi)建函數(shù)實(shí)例小結(jié)
- 詳細(xì)整理python 字符串(str)與列表(list)以及數(shù)組(array)之間的轉(zhuǎn)換方法
- python創(chuàng)建與遍歷List二維列表的方法
- Python源碼解析之List
相關(guān)文章
Python函數(shù)遞歸調(diào)用實(shí)現(xiàn)原理實(shí)例解析
這篇文章主要介紹了Python函數(shù)遞歸調(diào)用實(shí)現(xiàn)原理過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08詳解python如何在django中為用戶模型添加自定義權(quán)限
這篇文章主要介紹了python如何在django中為用戶模型添加自定義權(quán)限,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2018-10-10使用Python和XPath解析動(dòng)態(tài)JSON數(shù)據(jù)的操作指南
JSON動(dòng)態(tài)數(shù)據(jù)在Python中扮演著重要的角色,為開發(fā)者提供了處理實(shí)時(shí)和靈活數(shù)據(jù)的能力,動(dòng)態(tài)JSON數(shù)據(jù)的獲取可能涉及到網(wǎng)絡(luò)請(qǐng)求和API調(diào)用,可以使用Python和XPath來(lái)解析動(dòng)態(tài)JSON數(shù)據(jù),接下來(lái)小編就給大家介紹一下操作步驟2023-09-09Python pypinyin注音庫(kù)輕松絲滑實(shí)現(xiàn)漢字轉(zhuǎn)換成拼音
pypinyin 庫(kù),能像功夫熊貓那樣,輕松、快捷地幫你把漢字轉(zhuǎn)換成拼音,有了 pypinyin,不僅可以節(jié)省寶貴的時(shí)間,還可以更準(zhǔn)確地展示中文字符的讀音,使文化交流更為順暢,本文帶大家一起探索 pypinyin 庫(kù)的魅力2024-01-01Python連接到PostgreSQL數(shù)據(jù)庫(kù)的方法詳解
顧名思義,PostgreSQL?是一款為高效管理數(shù)據(jù)庫(kù)系統(tǒng)而創(chuàng)建的?SQL?系統(tǒng)軟件,這篇文章主要為大家詳細(xì)介紹了創(chuàng)建與?PostgreSQL?上的數(shù)據(jù)庫(kù)的連接的過程,需要的小伙伴可以了解下2023-10-10python+requests+unittest API接口測(cè)試實(shí)例(詳解)
下面小編就為大家?guī)?lái)一篇python+requests+unittest API接口測(cè)試實(shí)例(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2017-06-06Python生成器深度解析如何構(gòu)建強(qiáng)大的數(shù)據(jù)處理管道
這篇文章主要為大家介紹了Python生成器深度解析如何構(gòu)建強(qiáng)大的數(shù)據(jù)處理管道,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06對(duì)python當(dāng)中不在本路徑的py文件的引用詳解
今天小編就為大家分享一篇對(duì)python當(dāng)中不在本路徑的py文件的引用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2018-12-12Python利用matplotlib實(shí)現(xiàn)動(dòng)態(tài)可視化詳解
Python中的數(shù)據(jù)可視化是指原始數(shù)據(jù)的圖形表示,以更好地可視化、理解和推理,Python提供了各種庫(kù),包含用于可視化數(shù)據(jù)的不同特性,下面我們就來(lái)看看如何利用matplotlib實(shí)現(xiàn)動(dòng)態(tài)可視化吧2023-08-08