1. 程式人生 > >python之切片與叠代

python之切片與叠代

python之切片與叠代

取一個列表或元組的部分元素是非常常見的操作。

n=[]
(n[]n[])

當取多個元素時,可以用python自帶的切片(slice)

n=[]
(n[:])
[123, 234]

n[0:2]表示,從索引0開始,直到索引2為止,但不包含索引2,即索引0,1,正好是2個元素,如果第一個元素是0還可以省略

print(n[:2])

也可以從索引1開始,取兩個元素

n=[]
(n[:])
[234, 456]

倒數第一個元素的索引是-1

操作切片十分有用,先創建一個0-99的數列:

L=(())
(L)
(L[:])

取最後10個

L=(())
(L[-:])
[90, 91, 92, 93, 94, 95, 96, 97, 98, 99]

所有數,每5個取一個,在【開始:結束:步長】

L=(())
(L[::])
[0, 5, 10, 15, 20, 25, 30, 35, 40, 45]

復制一個列表

L[:]

tuple也是一個list,只是tuple不可變,所以tuple也可以做切片,結果仍然是tuple

print((1,2,3,4,5,6)[:3])
(1,2,3,4,5,6)為元組[:3]為切片操作

字符串也可以看成是一種list,每個元素就是一個字符串,因此字符串也可以用切片操作,結果仍為字符串

([:])
([::])

叠代

如果給定一個list或tuple,我們可以用for循環來遍歷,這種遍歷稱之為叠代。

list這種數據類型雖然有下標,但很多其他數據類型是沒有下標的,但是,只要是可叠代對象,無論有無下標,都可以叠代,比如dict就可以叠代

技術分享圖片

因為dict不是按照list的方式順序排列,所以叠代出的結果順序很可能不一樣。默認情況下,dict叠代的是key,如果要叠代value,可以用

for value in d.values():,如果要同時叠代key和value,可以用for k,v in d.items()。

字符串也可以叠代

技術分享圖片


所以對於for循環,只要作用於一個可叠代對象,for就能正常運行。

判斷一個對象是否能叠代的方法

collections模塊的

Iterable類型

技術分享圖片

實現對list的下標循環

enumerate函數可以把一個list變成索引-元素對,這樣就可以在for循環中同時叠代索引和元素本身。

ivalue  ([]):
    (ivalue)

上面的循環,同時引用兩個變量,在python裏很常見,下面示例

技術分享圖片



python之切片與叠代