摘要:是處理一組有序項(xiàng)目的數(shù)據(jù)結(jié)構(gòu),是中使用最頻繁的數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn),可以完成大多數(shù)數(shù)據(jù)集合類(lèi)的數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)。支持字符數(shù)字字符串甚至還可以嵌套列表元組字典等。一列表的創(chuàng)建是表示,內(nèi)部元素間用逗號(hào)隔開(kāi)。
List是處理一組有序項(xiàng)目的數(shù)據(jù)結(jié)構(gòu),是python中使用最頻繁的數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn),可以完成大多數(shù)數(shù)據(jù)集合類(lèi)的數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)。支持字符、數(shù)字、字符串甚至還可以嵌套列表、元組、字典等。
(一)列表的創(chuàng)建
(1)List是[]表示,內(nèi)部元素間用逗號(hào)隔開(kāi)。
(2)List中可以放元組、字典、列表、字符串、類(lèi)、內(nèi)建函數(shù)等。
(3)創(chuàng)建一個(gè)列表就像給一個(gè)變量賦值一樣的簡(jiǎn)單.你手工寫(xiě)一個(gè)列表(空的或者有值的都行)然后賦給一個(gè)變量,列表是由方括號(hào)([])來(lái)定義的,當(dāng)然,你也可以用工廠方法來(lái)創(chuàng)建它.
代碼:
>>> alist=[123,"abc",4.56,["inner","list"],7-9j] >>> anotherList=[None,"something to see here"] >>> print alist [123, "abc", 4.56, ["inner", "list"], (7-9j)] >>> print anotherList [None, "something to see here"] >>> aListThatStartedEmpty=[] >>> print aListThatStartedEmpty [] >>> list("fool") #工廠方法 ["f", "o", "o", "l"]
(二)列表的基本操作
列表的基本操作:增刪改查
(1)讀?。ㄔL問(wèn)列表的值):列表的切片操作就像字符串中一樣;切片操作符([])和索引值或索引值范圍一起使用
>>> lista=[1,2,3,4] >>> print lista[0] >>> print lista[-1] >>> print lista[1] >>> print lista[-2]
(2)修改(更新列表):可以通過(guò)在等號(hào)的左邊指定一個(gè)索引或者索引范圍的方式來(lái)更新一個(gè)或幾個(gè)元素,你也可以用 append()方法來(lái)追加元素到列表中。
>>> lista[0]+=10 >>> lista[0:3]=[3,4,5,6] >>> lista [3, 4, 5, 6, 4]
(3)遍歷:
>>> for i in lista: ... print i
(4)刪除:要?jiǎng)h除列表中的元素,如果你確切的知道要?jiǎng)h除元素的素引可以用 del 語(yǔ)句,否則可以用remove()方法.通過(guò) pop()方法來(lái)刪除并從列表中返回一個(gè)特定對(duì)象.
>>> lista=[1,2,3,4] >>> del lista[-1] >>> del lista[0] >>> lista [2, 3] >>> print lista >>> lista.remove(3) >>> lista [2] >>> listb=["a","b","c","d"] >>> listb.pop() #pop刪除最后一個(gè) "d" >>> listb ["a", "b", "c"]
(5)增加:append、insert、extend
>>> lista >>> lista.append("abc") >>> lista.append([1,2,3]) >>> lista.extend([4,5,6]) >>> lista.insert(1,1000) >>> lista
注:extend()方法的參數(shù)支持任何可迭代對(duì)象如下的文件:
>>>motd=[] >>> motd.append("msg of the day") >>> f=open(r"C:UsersAADesktop est1.txt","r") >>> motd.extend(f) >>> motd ["msg of the day", "hello world "] >>> f.close()
(6)合并列表:
>>> a=[1,2,3] >>> b=[4,5,6] >>> a+b
(7)列表的切片操作:
print str[0:3] #截取第一位到第三位的字符 print str[:] #截取字符串的全部字符 print str[6:] #截取第七個(gè)字符到結(jié)尾 print str[:-3] #截取從頭開(kāi)始到倒數(shù)第三個(gè)字符之前 print str[2] #截取第三個(gè)字符 print str[-1] #截取倒數(shù)第一個(gè)字符 print str[::-1] #創(chuàng)造一個(gè)與原字符串順序相反的字符串 print str[-3:-1] #截取倒數(shù)第三位與倒數(shù)第一位之前的字符 print str[-3:] #截取倒數(shù)第三位到結(jié)尾 print str[:-5:-3] #逆序截取
詳解:列表的下標(biāo)有三個(gè)參數(shù):beg(起始下標(biāo)),end(終止下標(biāo)),delta(變化量)
當(dāng)delta小于0時(shí),beg默認(rèn)為len(array)-1,end默認(rèn)為開(kāi)頭之前。
當(dāng)delta大于0時(shí),beg默認(rèn)為0,end默認(rèn)為最末之后。
當(dāng)delta未給出時(shí):delta默認(rèn)為1
注:列表切片產(chǎn)生的是列表的副本,與原列表不是同一份空間。切片生成的子序列元素是源版的拷貝。因此切片是一種淺拷貝。
>>> x=[1,2,3] >>> y=x[:] >>> x[0]=-1 >>> y [1, 2, 3]
切片的寫(xiě)操作:
>>> x=[1,2,3,4,5] >>> x[2:0]=[990] >>> x [1, 2, 990, 3, 4, 5] >>> del x[2:3] >>> x [1, 2, 3, 4, 5] >>> del x[3:2] #如果from>> x [1, 2, 3, 4, 5]
(三)列表的運(yùn)算符:len(list)、+、*、in 、遍歷
>>>a=[1,2,3] >>>len(a) 3 >>>[1,2,3]+[4,5,6] [1, 2, 3, 3, 4, 5] >>>["a"]*3 ["a", "a", "a"] >>>3 in a True >>> >>> for i in [1,2,3]:print i ... 1 2 3
(四)列表的函數(shù)與方法
(1)列表統(tǒng)計(jì)
>>>[2,4,5,4,4,4,4].count(4) 5
(2)列表index(value,start,end) start end為閉開(kāi)區(qū)間
a=[2,3,4,"b"] a.index("b") a.index("b",2) a.index("b",4) a.index("b",1,5)
解釋?zhuān)篴.index(‘b’,1,5)
從a中查找元素b的位置,從索引1位置開(kāi)始包括1,到索引位置5但不包括位置5
注:index()來(lái)檢查一個(gè)元素是否存在于一個(gè)list中并不是個(gè)好主意,因?yàn)椴淮嬖诰蜁?huì)出錯(cuò)。應(yīng)該先用 in 成員關(guān)系操作符(或者是 not in)檢查一下,然后在用 index()找到這個(gè)元素的位置。
代碼(可以避免index報(bào)錯(cuò)):
>>> for i in ["compact disc", 45, "8-track tape"]: ... if i in music_media: ... print music_media.index(i) 0 1 2
(3)列表pop刪除-pop(index),index不寫(xiě)默認(rèn)為最后一個(gè)元素的索引,可以寫(xiě)索引
>>>?a=range(10) >>>?a [0,?1,?2,?3,?4,?5,?6,?7,?8,?9] >>>?print?a.pop() 9 >>>?a [0,?1,?2,?3,?4,?5,?6,?7,?8] >>>?print?a.pop(0) 0 >>>?a [1,?2,?3,?4,?5,?6,?7,?8]
(4)Cmp:列表比較,相等返回0,大于返回1,小于返回-1
>>>?a=[1,2] >>>?b=[1,2,3] >>>?cmp(a,b) -1 >>>?a=[] >>>?b=[] >>>?cmp(a,b) 0
(5)列表reverse()-列表反向輸出并不會(huì)排序
>>> a=[3,4,5,6,7,8,9] >>> a.reverse() >>> a [9, 8, 7, 6, 5, 4, 3]
(6)列表sort()-列表排序
>>> a=[3,4,5,6,7,8,9] >>> a.sort() >>> a [3, 4, 5, 6, 7, 8, 9]
Sorted:
>>>?a=[1,-1,-2,4,-3,3] >>>?b=sorted(a) >>>?print?b [-3,?-2,?-1,?1,?3,?4] >>>?print?a [1,?-1,?-2,?4,?-3,?3]
注:那些可以改變對(duì)象值的可變對(duì)象的方法是沒(méi)有返回值的!
在使用可變對(duì)象的方法如 sort(),extend()和 reverse()的時(shí)候要注意,這些操作會(huì)在列表中原地執(zhí)行操作,也就是說(shuō)現(xiàn)有的列表內(nèi)容會(huì)被改變,但是沒(méi)有返回值!是的,與之相反,字符串方法確實(shí)有返回值:
4、綜合列表的推導(dǎo)(列表推導(dǎo))
[expr for iter_var in iterable]
這個(gè)語(yǔ)句的核心是 for 循環(huán), 它迭代 iterable 對(duì)象的所有條目. 前邊的 expr 應(yīng)用于序列的每個(gè)成員, 最后的結(jié)果值是該表達(dá)式產(chǎn)生的列表. 迭代變量并不需要是表達(dá)式的一部分.
[expr for iter_var in iterable if cond_expr]
(1)先執(zhí)行for后if,然后執(zhí)行的結(jié)果放到list中
(2)如果是兩個(gè)for,則先執(zhí)行左邊的for,在執(zhí)行右邊的for,執(zhí)行的結(jié)果放到List中
>>>?[x?for?x?in?range(1,10,2)] [1,?3,?5,?7,?9] >>>?[x**2?for?x?in?range(1,10,2)] [1,?9,?25,?49,?81] >>>?[i?for?i?in?range(20)?if?i%2==0] [0,?2,?4,?6,?8,?10,?12,?14,?16,?18] d?=?{"x":?"A",?"y":?"B",?"z":?"C"?} print?[k?+?"="?+?v?for?k,?v?in?d.iteritems()]
例子1:矩陣轉(zhuǎn)置:
a=[[1,2,3],[4,5,6],[7,8,9],[10,11,12]] print?[?[j[i]?for?j?in?a]?for?i?in?range(3)]
以下為例子進(jìn)行分析:
a=[[1,2],[4,5]]
print?[?[j[i]?for?j?in?a]?for?i?in?range(2)]
分析:
for?i?in?range(2)--->i:0?--->第一次循環(huán)
???for?j?in?a:---第一次:[1,2]
????????1,2--->[1]????
??????for?j?in?a:---第2次:[4,5]
????????4,5--->[1,4]??
for?i?in?range(2)--->i:1?--->第二次循環(huán)
???for?j?in?a:---第一次:[1,2]
????????1,2--->[2]????
??????for?j?in?a:---第2次:[4,5]
????????4,5--->[2,5]
[[1,4]?,[2,5]]?
例子2:刪除列表的3,6,9,12
a=[[1,2,3],[4,5,6],[7,8,9],[10,11,12]] print?[?[i[j]?for?j?in?[1,2]]for?i?in?a]
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/40898.html
摘要:列表同字符串一樣都是有序的,因?yàn)樗麄兌伎梢酝ㄟ^(guò)切片和索引進(jìn)行數(shù)據(jù)訪問(wèn),且列表的的是可變的。 列表(list)同字符串一樣都是有序的,因?yàn)樗麄兌伎梢酝ㄟ^(guò)切片和索引進(jìn)行數(shù)據(jù)訪問(wèn),且列表的的是可變的。 創(chuàng)建列表的幾種方法 第一種 name_list = [Python, PHP, JAVA] 第二種 name_list = list([Python, PHP, JAVA]) 創(chuàng)建一個(gè)空列表 ...
摘要:這種數(shù)據(jù)結(jié)構(gòu)包含以下幾種常見(jiàn)的操作向關(guān)聯(lián)數(shù)組添加鍵值對(duì)從關(guān)聯(lián)數(shù)組內(nèi)刪除鍵值對(duì)修改關(guān)聯(lián)數(shù)組內(nèi)的鍵值對(duì)根據(jù)已知的鍵尋找值字典問(wèn)題是設(shè)計(jì)一種能夠具備關(guān)聯(lián)數(shù)組特性的數(shù)據(jù)結(jié)構(gòu)。 定義 Python中有一個(gè)叫作dictionary的對(duì)象類(lèi)型,翻譯過(guò)來(lái)就是字典,用dict表示。 創(chuàng)建字典 創(chuàng)建空的字典 >>> mydict = {} >>> mydict {} >>> type(mydict) >...
目錄Numpy簡(jiǎn)介Numpy操作集合1、不同維度數(shù)據(jù)的表示1.1 一維數(shù)據(jù)的表示1.2 二維數(shù)據(jù)的表示1.3 三維數(shù)據(jù)的表示2、 為什么要使用Numpy2.1、Numpy的ndarray具有廣播功能2.2 Numpy數(shù)組的性能比Python原生數(shù)據(jù)類(lèi)型高3 ndarray的屬性和基本操作3.1 ndarray的基本屬性3.2 ndarray元素類(lèi)型3.3 創(chuàng)建ndarray的方式3.4 ndarr...
摘要:基礎(chǔ)之控制結(jié)構(gòu)學(xué)習(xí)目標(biāo)代碼塊與縮進(jìn)條件語(yǔ)句語(yǔ)句語(yǔ)句的嵌套斷言循環(huán)循環(huán)循環(huán)中斷循環(huán)控制語(yǔ)句綜合嵌套列表解析式基礎(chǔ)相關(guān)鏈接學(xué)習(xí)目標(biāo)是簡(jiǎn)潔易學(xué)面向?qū)ο蟮木幊陶Z(yǔ)言。 Py...
摘要:元組和列表的為唯一區(qū)別就是列表可以更改,元組不可以更改,其他功能與列表一樣創(chuàng)建元組的兩種方法第一種第二種如果元祖內(nèi)只有一個(gè)元素,那么需要加上一個(gè)逗號(hào),否則就變成字符串了。 元組(tuple)和列表的為唯一區(qū)別就是列表可以更改,元組不可以更改,其他功能與列表一樣 創(chuàng)建元組的兩種方法 第一種 ages = (11, 22, 33, 44, 55) 第二種 ages = tuple((11,...
摘要:下文統(tǒng)一稱(chēng)為數(shù)組是存儲(chǔ)單一數(shù)據(jù)類(lèi)型的多維數(shù)組同語(yǔ)言數(shù)組直接保存數(shù)值而則是能夠?qū)?shù)組進(jìn)行處理的函數(shù)。動(dòng)態(tài)數(shù)據(jù)類(lèi)型與的數(shù)組和的這些不可變數(shù)據(jù)類(lèi)型的適用場(chǎng)景等可變數(shù)據(jù)類(lèi)型適用于需要不斷對(duì)原始數(shù)據(jù)進(jìn)行修改的場(chǎng)景。 showImg(https://segmentfault.com/img/remote/1460000018925396);Numpy,是python中的一個(gè)矩陣計(jì)算包,功能類(lèi)似ma...
閱讀 833·2019-08-30 14:05
閱讀 1723·2019-08-30 11:08
閱讀 3226·2019-08-29 15:41
閱讀 3600·2019-08-23 18:31
閱讀 1522·2019-08-23 18:29
閱讀 555·2019-08-23 14:51
閱讀 2114·2019-08-23 13:53
閱讀 2135·2019-08-23 13:02