【列表一:操作列表】:這裡總結了操作列表的部分知識,包括使用for迴圈遍歷列表、range()函數介紹、使用range()函數創建數值列表,以及是列表的切片。 ...
一、遍歷列表
1. 遍歷整個列表:使用for迴圈
1 colors=['red','yellow','blue','green'] #定義列表 2 for color in colors: #使用迴圈:從列表中提取一個元素並將其存在變數i中 3 print(color) #列印變數i的值
以上代碼運行的結果是:執行第1行代碼定義列表colors,執行第2行代碼;for語句末尾的冒號告訴Python,下一行是迴圈的第一行。進入第一次迴圈: 第2行代碼獲取列表colors中的第一個值('red'),並將其存儲到變數 color 中;接下來執行第3行代碼,讓Python列印 color 的值'red'。完成第一次迴圈。 由於列表還包含其他值,Python返回到迴圈的第一行,即第2行代碼,開始第二次迴圈: Python獲取列表中的第二個顏色'yellow',並將其存儲到變數 color 中,再執行第3行代碼,Python再次列印變數 color 的當前的值'yellow',完成第二次迴圈。 依此類推,直至對列表中的最後一個值'green'進行處理。至此,列表沒有其他的值了,Python執行程式的下一行代碼。 在這個示例中,for迴圈後面沒有其他的代碼,程式就此結束。
2.for 迴圈中的縮進與結束後操作
1 colors=['red','yellow','blue','green'] 2 for color in colors: 3 print(color.title()+"是我最喜歡的顏色。") 4 print("但"+color.upper()+"是他最討厭的顏色。\n") 5 print("這條語句不在迴圈內,只在迴圈結束後執行一次")
以上代碼運行的結果是:在代碼for color in colors後面,每個縮進的代碼行都是迴圈的一部分,且將針對列表中的每個值都執行一次。因此,可對列表中的每個值執行任意次數的操作。由於前兩條print語句都縮進了,因此它們都將針對列表中的每個元素執行一次。第二條print語句中的換行符"\n",在每次迭代結束後都插入一個空行從。第3條print語句不在迴圈內,只在迴圈結束後執行一次
二、創建數值列表
1.函數 range()介紹
可用Python函數range()讓成一系列的數字。函數range()讓Python指定的第一個值開始數,併在到達指定的第二個值後停止,輸出不包含第二個值。1 for value_1 in range(2,7): #使用迴圈遍歷range(2,7)的整數 2 print (value_1)
以上代碼運行的結果是:
2.創建數值列表
要創建數字列表,可使用函數list()將range()的結果直接轉換為列表。如果將range()作為list()的參數,輸出將為一個數字列表。使用函數range()時,還可指定步長。【range(a,b,c)】a為開始元素,b為結束元素(不包含b),c為步長。列表解析:將for迴圈和創建新元素的代碼合併成一行,並自動附加新元素。用法:首先指定一個描述性的列表名,如Sa;然後指定一個左方括弧,並定義一個表達式,用於生成你要存儲到列表中的值。在下麵20-24行代碼中,表達式為a**2,它計算平方值。接下來,編寫一個for迴圈,用於給表達式提供值,再加上右方括弧。在下麵示例中,for迴圈為for value in range(1,11),它將值1~10提供給表達式value**2。請註意,這裡的for語句末尾沒有冒號。
1 print('創建數字列表') 2 num=list(range(10,15)) #創建num列表,將range()的結果直接轉換為列表。此處range()作為列表的參數,運行後輸出一個數字列表 3 print(num) 4 5 print('\n指定range()的步長') 6 num1=list(range(10,15,2)) #從10開始,到15(不包括15),步長為2 7 print(num1) 8 9 print("\n練習:創建一個包含前十個整數的平方列表") 10 As=[] #新建空列表 11 for a in range(1,11): #使用range()函數創建數字1~10,並將其保存在變數a中 12 A=a**2 #計算當前迴圈值得平方 13 As.append(A) #使用append()方法將當前平方值添加到列表中 14 print(As) #迴圈結束後,列印列表。 15 16 print("\n練習的簡介代碼") 17 S=[] 18 for i in range(1,11): 19 S.append(i**2) 20 print(S) 21 22 print("\n列表解析例子:將練習代碼合成一行") 23 Sa=[a**2 for a in range(1,11)] 24 print(Sa)
以上代碼運行的結果是:
3.數字列表簡單統計計算
min()函數:返回數字列表最小值
max()函數:返回數字列表最大值
sum()函數:對數字列表元素求和
1 D=[10,20,30,40,50,60,70,80,90,0] 2 print(min(D)) 3 print(max(D)) 4 print(sum(D))
以上代碼運行的結果是:
三、使用列表的一部分
1. 切片
創建切片,需使用起始元素和終止元素的索引。列表的切片返回的是列表,可理解為獲取原列表的子集。【list[a:b:c]】,a、b、c分別為起始於索引、終止索引及步長(不包括終止位置元素b)註意:
①列表切片使用符號是冒號“:”。range()函數使用的是逗號“,”。列表用逗號“,”分隔。
②未指定起始索引,預設從原列表第一個位置,即索引0開始提取元素。
③未指定終止索引,預設提取到列最後一個元素。
④列表中的步長理解:假設原列表為Q=[-20,-10,10,20,30,40,50,60,70,80,90,100,0]切片為Q[3:10:3],則切片從3號索引的20開始,到9號索引位的80,間隔3提取元素組成列表。提取的子集為[50,80]。特別註意,間隔3可理解為從起始索引位開始,向後開始數1~3,要提取每次數到3時該索引位置的元素。
1 alist=[3,'@','pen','book',6,'W','top'] 2 print(alist) #列印原列表 3 print("列表的切片返回的是列表,可理解為獲取原列表的子集") 4 print(alist[:]) #同樣是列印原列表。列表切片使用的符號是冒號【:】,註意range()函數使用的是逗號【,】。列表用逗號【,】分隔 5 print(alist[:3]) #未指定開始索引,從頭開始到索引3(不包括索引3位置元素) 6 print(alist[3:]) #未指定終止元素,切片未從索引3位置到列表最後 7 print(alist[0:2]) #提取第1-2個元素 8 print(alist[1:5:2]) #以2未步長,提取從第2個開始到第5個元素,即索引4位置元素。註意步長 9 print(alist[1::2]) #以2為步長,提取從第2個開始到列表最後的元素 10 print(alist[-3:]) #提取倒數第三位至最後的元素 11 print(alist[2:-2]) #提取從第三位到倒數第二位之間的元素
以上代碼運行的結果是:
2. 遍歷切片
要遍歷列表的部分元素,可在for迴圈中使用切片。下麵的例子將遍歷前三個元素並將其列印出來。
1 print("代碼1:") 2 alist=[3,'@','pen','book',6,'W','top'] 3 AA=alist[0:3] 4 for a in AA: 5 print(a) 6 7 print("\n代碼2:") 8 alist_1=[3,'@','pen','book',6,'W','top'] 9 for a in alist_1[:3]: 10 print(a)
以上代碼運行結果是:
使用列表解析不能得到上面要求的結果:
1 print("\n'代碼3:列表解析'不能得到提取前三個元素並將其列印的結果,因為列表解析得到的是列表") 2 alist_2=[3,'@','pen','book',6,'W','top'] 3 a=[i for i in alist_2[:3]] 4 print(a)
以上代碼運行的結果是: