List 列表 -------------------------------------------------------------- a = ['c', 'b', 'a'] a.sort() #排序 print(a)#['a', 'b', 'c'] -------------------------------------------------------------- 初始化 list1 = ['Google', 'Runoob', 1997, 2000]; list2 = [1, 2, 3, 4, 5 ]; list3 = ["a", "b", "c", "d"]; ------------------------------------------------------------------------------------------ 支持字符 數(shù)字 字符串 列表嵌套 #!/usr/bin/python # -*- coding: UTF-8 -*- list = [ 'rongshui', 786 , 2.23, 'john', 70.2 ] tinylist = [123, 'john'] print list # 輸出完整列表 print list[0] # 輸出列表的第一個(gè)元素 print list[1:3] # 輸出第二個(gè)至第三個(gè)元素 切片 print list[2:] # 輸出從第三個(gè)開始至列表末尾的所有元素 print tinylist * 2 # 輸出列表兩次 print list + tinylist # 打印組合的列表 結(jié)果: ['rongshui', 786, 2.23, 'john', 70.2] rongshui [786, 2.23] [2.23, 'john', 70.2] [123, 'john', 123, 'john'] ['rongshui', 786, 2.23, 'john', 70.2, 123, 'john'] ------------------------------------------------------------------------------------------ >>>classmates=['MIchael','Bob','Trancy'] >>> len(classmates)#長度 3 >>> classmates[0]='rongshui'#替換 >>> classmates#全部輸出 ['rongshui', 'Bob', 'Trancy'] >>> indexhou=len(classmates)-1#末尾索引 >>> classmates[-1]#末尾元素 >>>'Trancy' >>> classmates[indexhou]==classmates[-1] True >>> classmates.append('xuniu')#后增 >>> print(classmates) ['rongshui', 'Bob', 'Trancy', 'xuniu'] >>> classmates.insert(0,'linrui')#插入 >>> print(classmates) ['linrui', 'rongshui', 'Bob', 'Trancy', 'xuniu'] >>> classmates.pop()#后刪除 'xuniu' >>> print(classmates) ['linrui', 'rongshui', 'Bob', 'Trancy'] >>> classmates.pop(0);print(classmates)#指定刪除 'linrui' ['rongshui', 'Bob', 'Trancy'] ------------------------------------------------------------------------------------------ >>> L = []#空List >>> len(L) 0 -------------------------------------------------------------------------------- 刪除列表元素 #!/usr/bin/python3 list = ['Google', 'nsci', 1997, 2000] print ("原始列表 : ", list) del list[2] print ("刪除第三個(gè)元素 : ", list) 原始列表 : ['Google', 'nsci', 1997, 2000] 刪除第三個(gè)元素 : ['Google', 'nsci', 2000] -------------------------------------------------------------------------------- 列表操作 len([1, 2, 3]) 3 長度 [1, 2, 3] + [4, 5, 6] [1, 2, 3, 4, 5, 6] 疊加組合 ['Hi!'] * 4 ['Hi!', 'Hi!', 'Hi!', 'Hi!'] 重復(fù) 3 in [1, 2, 3] True 元素是否存在于列表中 for x in [1, 2, 3]: print(x, end=" ") 1 2 3 迭代 -------------------------------------------------------------------------------- 嵌套列表 嵌套列表 使用嵌套列表即在列表里創(chuàng)建其它列表,例如: >>>a = ['a', 'b', 'c'] >>> n = [1, 2, 3] >>> x = [a, n] >>> x [['a', 'b', 'c'], [1, 2, 3]] >>> x[0] ['a', 'b', 'c'] >>> x[0][1] 'b' -------------------------------------------------------------------------------- 列表函數(shù): 1 len(list) 列表元素個(gè)數(shù) 2 max(list) 返回列表元素最大值 3 min(list) 返回列表元素最小值 4 list(seq) 將元組轉(zhuǎn)換為列表 Python包含以下方法: 序號(hào) 方法 1 list.append(obj) 在列表末尾添加新的對(duì)象 2 list.count(obj) 統(tǒng)計(jì)某個(gè)元素在列表中出現(xiàn)的次數(shù) 3 list.extend(seq) 在列表末尾一次性追加另一個(gè)序列中的多個(gè)值(用新列表擴(kuò)展原來的列表) 4 list.index(obj) 從列表中找出某個(gè)值第一個(gè)匹配項(xiàng)的索引位置 5 list.insert(index, obj) 將對(duì)象插入列表 6 list.pop([index=-1]]) 移除列表中的一個(gè)元素(默認(rèn)最后一個(gè)元素),并且返回該元素的值 7 list.remove(obj) 移除列表中某個(gè)值的第一個(gè)匹配項(xiàng) 8 list.reverse() 反向列表中元素 9 list.sort(cmp=None, key=None, reverse=False) 對(duì)原列表進(jìn)行排序 10 list.clear() 清空列表 11 list.copy() 復(fù)制列表 ------------------------------------------------------------------------------------------ 將列表當(dāng)做堆棧使用 列表方法使得列表可以很方便的作為一個(gè)堆棧來使用,堆棧作為特定的數(shù)據(jù)結(jié)構(gòu),最先進(jìn)入的元素最后一個(gè)被釋放(后進(jìn)先出)。用 append() 方法可以把一個(gè)元素添加到堆棧頂。用不指定索引的 pop() 方法可以把一個(gè)元素從堆棧頂釋放出來。例如: >>> stack = [3, 4, 5] >>> stack.append(6) >>> stack.append(7) >>> stack [3, 4, 5, 6, 7] >>> stack.pop() ------------------------------------------------------------------------------------------ 將列表當(dāng)作隊(duì)列使用 也可以把列表當(dāng)做隊(duì)列用,只是在隊(duì)列里第一加入的元素,第一個(gè)取出來;但是拿列表用作這樣的目的效率不高。在列表的最后添加或者彈出元素速度快,然而在列表里插入或者從頭部彈出速度卻不快(因?yàn)樗衅渌脑囟嫉靡粋€(gè)一個(gè)地移動(dòng))。 >>> from collections import deque >>> queue = deque(["Eric", "John", "Michael"]) >>> queue.append("Terry") # Terry arrives >>> queue.append("Graham") # Graham arrives >>> queue.popleft() # The first to arrive now leaves 'Eric' >>> queue.popleft() # The second to arrive now leaves 'John' >>> queue # Remaining queue in order of arrival deque(['Michael', 'Terry', 'Graham']) 7 >>> stack [3, 4, 5, 6] >>> stack.pop() 6 >>> stack.pop() 5 >>> stack [3, 4] ------------------------------------------------------------------------------------------ 列表推導(dǎo)式 列表推導(dǎo)式提供了從序列創(chuàng)建列表的簡單途徑。通常應(yīng)用程序?qū)⒁恍┎僮鲬?yīng)用于某個(gè)序列的每個(gè)元素,用其獲得的結(jié)果作為生成新列表的元素,或者根據(jù)確定的判定條件創(chuàng)建子序列。 每個(gè)列表推導(dǎo)式都在 for 之后跟一個(gè)表達(dá)式,然后有零到多個(gè) for 或 if 子句。返回結(jié)果是一個(gè)根據(jù)表達(dá)從其后的 for 和 if 上下文環(huán)境中生成出來的列表。如果希望表達(dá)式推導(dǎo)出一個(gè)元組,就必須使用括號(hào)。 這里我們將列表中每個(gè)數(shù)值乘三,獲得一個(gè)新的列表: >>> vec = [2, 4, 6] >>> [3*x for x in vec] [6, 12, 18] 現(xiàn)在我們玩一點(diǎn)小花樣: >>> [[x, x**2] for x in vec] [[2, 4], [4, 16], [6, 36]] 這里我們對(duì)序列里每一個(gè)元素逐個(gè)調(diào)用某方法: >>> freshfruit = [' banana', ' loganberry ', 'passion fruit '] >>> [weapon.strip() for weapon in freshfruit] ['banana', 'loganberry', 'passion fruit'] 我們可以用 if 子句作為過濾器: >>> [3*x for x in vec if x > 3] [12, 18] >>> [3*x for x in vec if x < 2] [] 以下是一些關(guān)于循環(huán)和其它技巧的演示: >>> vec1 = [2, 4, 6] >>> vec2 = [4, 3, -9] >>> [x*y for x in vec1 for y in vec2] [8, 6, -18, 16, 12, -36, 24, 18, -54] >>> [x+y for x in vec1 for y in vec2] [6, 5, -7, 8, 7, -5, 10, 9, -3] >>> [vec1[i]*vec2[i] for i in range(len(vec1))] [8, 12, -54] 列表推導(dǎo)式可以使用復(fù)雜表達(dá)式或嵌套函數(shù): >>> [str(round(355/113, i)) for i in range(1, 6)] ['3.1', '3.14', '3.142', '3.1416', '3.14159'] ------------------------------------------------------------------------------------------ 嵌套列表解析 Python的列表還可以嵌套。 以下實(shí)例展示了3X4的矩陣列表: >>> matrix = [ ... [1, 2, 3, 4], ... [5, 6, 7, 8], ... [9, 10, 11, 12], ... ] 以下實(shí)例將3X4的矩陣列表轉(zhuǎn)換為4X3列表: >>> [[row[i] for row in matrix] for i in range(4)] [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]] 以下實(shí)例也可以使用以下方法來實(shí)現(xiàn): >>> transposed = [] >>> for i in range(4): ... transposed.append([row[i] for row in matrix]) ... >>> transposed [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]] 另外一種實(shí)現(xiàn)方法: >>> transposed = [] >>> for i in range(4): ... # the following 3 lines implement the nested listcomp ... transposed_row = [] ... for row in matrix: ... transposed_row.append(row[i]) ... transposed.append(transposed_row) ... >>> transposed [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]] |
|