摘要:是處理一組有序項目的數據結構,是中使用最頻繁的數據結構實現,可以完成大多數數據集合類的數據結構實現。支持字符數字字符串甚至還可以嵌套列表元組字典等。一列表的創建是表示,內部元素間用逗號隔開。
List是處理一組有序項目的數據結構,是python中使用最頻繁的數據結構實現,可以完成大多數數據集合類的數據結構實現。支持字符、數字、字符串甚至還可以嵌套列表、元組、字典等。
(一)列表的創建
(1)List是[]表示,內部元素間用逗號隔開。
(2)List中可以放元組、字典、列表、字符串、類、內建函數等。
(3)創建一個列表就像給一個變量賦值一樣的簡單.你手工寫一個列表(空的或者有值的都行)然后賦給一個變量,列表是由方括號([])來定義的,當然,你也可以用工廠方法來創建它.
代碼:
>>> 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)讀取(訪問列表的值):列表的切片操作就像字符串中一樣;切片操作符([])和索引值或索引值范圍一起使用
>>> lista=[1,2,3,4] >>> print lista[0] >>> print lista[-1] >>> print lista[1] >>> print lista[-2]
(2)修改(更新列表):可以通過在等號的左邊指定一個索引或者索引范圍的方式來更新一個或幾個元素,你也可以用 append()方法來追加元素到列表中。
>>> lista[0]+=10 >>> lista[0:3]=[3,4,5,6] >>> lista [3, 4, 5, 6, 4]
(3)遍歷:
>>> for i in lista: ... print i
(4)刪除:要刪除列表中的元素,如果你確切的知道要刪除元素的素引可以用 del 語句,否則可以用remove()方法.通過 pop()方法來刪除并從列表中返回一個特定對象.
>>> 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刪除最后一個 "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()方法的參數支持任何可迭代對象如下的文件:
>>>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:] #截取第七個字符到結尾 print str[:-3] #截取從頭開始到倒數第三個字符之前 print str[2] #截取第三個字符 print str[-1] #截取倒數第一個字符 print str[::-1] #創造一個與原字符串順序相反的字符串 print str[-3:-1] #截取倒數第三位與倒數第一位之前的字符 print str[-3:] #截取倒數第三位到結尾 print str[:-5:-3] #逆序截取
詳解:列表的下標有三個參數:beg(起始下標),end(終止下標),delta(變化量)
當delta小于0時,beg默認為len(array)-1,end默認為開頭之前。
當delta大于0時,beg默認為0,end默認為最末之后。
當delta未給出時:delta默認為1
注:列表切片產生的是列表的副本,與原列表不是同一份空間。切片生成的子序列元素是源版的拷貝。因此切片是一種淺拷貝。
>>> x=[1,2,3] >>> y=x[:] >>> x[0]=-1 >>> y [1, 2, 3]
切片的寫操作:
>>> 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]
(三)列表的運算符: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
(四)列表的函數與方法
(1)列表統計
>>>[2,4,5,4,4,4,4].count(4) 5
(2)列表index(value,start,end) start end為閉開區間
a=[2,3,4,"b"] a.index("b") a.index("b",2) a.index("b",4) a.index("b",1,5)
解釋:a.index(‘b’,1,5)
從a中查找元素b的位置,從索引1位置開始包括1,到索引位置5但不包括位置5
注:index()來檢查一個元素是否存在于一個list中并不是個好主意,因為不存在就會出錯。應該先用 in 成員關系操作符(或者是 not in)檢查一下,然后在用 index()找到這個元素的位置。
代碼(可以避免index報錯):
>>> 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不寫默認為最后一個元素的索引,可以寫索引
>>>?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()-列表反向輸出并不會排序
>>> 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]
注:那些可以改變對象值的可變對象的方法是沒有返回值的!
在使用可變對象的方法如 sort(),extend()和 reverse()的時候要注意,這些操作會在列表中原地執行操作,也就是說現有的列表內容會被改變,但是沒有返回值!是的,與之相反,字符串方法確實有返回值:
4、綜合列表的推導(列表推導)
[expr for iter_var in iterable]
這個語句的核心是 for 循環, 它迭代 iterable 對象的所有條目. 前邊的 expr 應用于序列的每個成員, 最后的結果值是該表達式產生的列表. 迭代變量并不需要是表達式的一部分.
[expr for iter_var in iterable if cond_expr]
(1)先執行for后if,然后執行的結果放到list中
(2)如果是兩個for,則先執行左邊的for,在執行右邊的for,執行的結果放到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:矩陣轉置:
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)]
以下為例子進行分析:
a=[[1,2],[4,5]]
print?[?[j[i]?for?j?in?a]?for?i?in?range(2)]
分析:
for?i?in?range(2)--->i:0?--->第一次循環
???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?--->第二次循環
???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]
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/40898.html
摘要:列表同字符串一樣都是有序的,因為他們都可以通過切片和索引進行數據訪問,且列表的的是可變的。 列表(list)同字符串一樣都是有序的,因為他們都可以通過切片和索引進行數據訪問,且列表的的是可變的。 創建列表的幾種方法 第一種 name_list = [Python, PHP, JAVA] 第二種 name_list = list([Python, PHP, JAVA]) 創建一個空列表 ...
摘要:這種數據結構包含以下幾種常見的操作向關聯數組添加鍵值對從關聯數組內刪除鍵值對修改關聯數組內的鍵值對根據已知的鍵尋找值字典問題是設計一種能夠具備關聯數組特性的數據結構。 定義 Python中有一個叫作dictionary的對象類型,翻譯過來就是字典,用dict表示。 創建字典 創建空的字典 >>> mydict = {} >>> mydict {} >>> type(mydict) >...
目錄Numpy簡介Numpy操作集合1、不同維度數據的表示1.1 一維數據的表示1.2 二維數據的表示1.3 三維數據的表示2、 為什么要使用Numpy2.1、Numpy的ndarray具有廣播功能2.2 Numpy數組的性能比Python原生數據類型高3 ndarray的屬性和基本操作3.1 ndarray的基本屬性3.2 ndarray元素類型3.3 創建ndarray的方式3.4 ndarr...
摘要:基礎之控制結構學習目標代碼塊與縮進條件語句語句語句的嵌套斷言循環循環循環中斷循環控制語句綜合嵌套列表解析式基礎相關鏈接學習目標是簡潔易學面向對象的編程語言。 Py...
摘要:元組和列表的為唯一區別就是列表可以更改,元組不可以更改,其他功能與列表一樣創建元組的兩種方法第一種第二種如果元祖內只有一個元素,那么需要加上一個逗號,否則就變成字符串了。 元組(tuple)和列表的為唯一區別就是列表可以更改,元組不可以更改,其他功能與列表一樣 創建元組的兩種方法 第一種 ages = (11, 22, 33, 44, 55) 第二種 ages = tuple((11,...
摘要:下文統一稱為數組是存儲單一數據類型的多維數組同語言數組直接保存數值而則是能夠對數組進行處理的函數。動態數據類型與的數組和的這些不可變數據類型的適用場景等可變數據類型適用于需要不斷對原始數據進行修改的場景。 showImg(https://segmentfault.com/img/remote/1460000018925396);Numpy,是python中的一個矩陣計算包,功能類似ma...
閱讀 821·2019-08-30 14:05
閱讀 1712·2019-08-30 11:08
閱讀 3216·2019-08-29 15:41
閱讀 3591·2019-08-23 18:31
閱讀 1510·2019-08-23 18:29
閱讀 546·2019-08-23 14:51
閱讀 2103·2019-08-23 13:53
閱讀 2126·2019-08-23 13:02