python之切片與叠代
阿新 • • 發佈:2018-04-24
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之切片與叠代