Python(八)切片 迭代 列表生成式 生成器

2021-07-23 02:21:52 字數 1633 閱讀 6700

一、切片

在寫程式的時候經常會用到取某個列表或者元組中的某乙個元素或者是某一段元素,可以使用迴圈實現,在python中也可以使用切片實現。

格式:

l1 = ['test1','test2','test3','test4']

print l1

// 開始位置:結束位置,從0開始取值,直到結束位置減一,即 下標元素 0 1

l2 = l1[0:2]

同上# l2 = l1[:2]

print l2

從下標0開始取值到下標2-1的位置,在這段值期間隔2個取乙個值

l3 = l1[0:2:2]

print l3

s = 'abcdefghijklmn'

print s[:2]

print s[1:3]

從下標1開始,直到6-1的位置,每隔2個取乙個值

print s[1:6:2]

二、迭代

很容易理解,在c語言中,如果要遍歷乙個陣列一般都是根據陣列的下標開始遍歷整個陣列,然後根據下標訪問陣列中的元素,但是在python中,列表字典等這樣的,可以通過for...in....直接遍歷列表中的元素。這樣的遍歷方式就是迭代。參考

三、列表生成式

是python內建的非常簡單卻強大的可以用來建立list的生成式

如果要生成乙個列表的所有元素,可以通過迴圈然後將生成的元素追加到列表中,這樣也實現了列表的生成,但是比較麻煩,所以在python中可以通過列表生成式快速的生成乙個列表:

s = [x * x for x in range(1, 11)]

print s

這個語句執行的結果是生成一組資料,這些資料儲存在列表中。

在寫列表生成式的時候把要生成的結果放在前面,後面是乙個迴圈,再迴圈的後面還可以新增上判斷

s = [x * x for x in range(1, 11) if x % 2 == 0]

print s

先執行迴圈生成乙個資料,然後執行後面的判斷,然後再執行最後的x*x

還可以使用兩層迴圈

s = [m + n for m in 'abcdefg' for n in 'xyz']

print s

這一語句的實現和c語言的迴圈巢狀一樣,第二個迴圈在第乙個迴圈裡面。最前面的表示式是結果。

還可以使用多個變數

d =

s = [key + '=' + value for key , value in d.iteritems()]

print s

將乙個列表中的所有字串變成小寫生成乙個列表:

內建的isinstance函式可以判斷乙個變數是不是字串

isinstance(x, str)
會返回true  false

四、生成器

生成器和列表生成式的差別:列表生成式執行過之後結果都已經生成儲存在記憶體中,生成器執行過之後並沒有實際的資料儲存在記憶體中,當你在使用列表生成器中的元素的時候,才會有實際的資料生成。表示式和列表生成式的區別在於乙個是[ ]  乙個是 ( ),

k = (x.lower() for x in l if isinstance(x,str))

print k

參考

python學習筆記(八)切片 迭代 列表生成式

1 切片 提取前n個元素,0 n 1 l michael sarah tracy bob jack l 0 3 michael sarah tracy 如果第乙個索引是0,可以省略 l 3 michael sarah tracy 從倒數第二個取,至最後 l 2 bob jack 前十個數,每兩個取乙...

python入門 切片,迭代,列表生成

取列表或者元祖中的元素,可以通過索引,但索引只能取乙個元素。如果取多個元素,通過迴圈的話,比較繁瑣。而如果用切片,一行 就解決了。切片是python中比較靈活的選取列表或者元祖中選取元素的方法,當然也可以選擇字串中的元素。基本的形式是l start end 表示從start一值到end的索引元素,間...

python學習 切片 迭代 列表生成式

1 切片 s list range 15 print s 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14 print s 0 s 1 s 2 0 1 2 print s 0 3 0,1,2 s 0 到s 3 包括s 0 不包括s 3 print s 3 0,1,2 起始值為0時...