Zip 可以接受兩個以上的 sequence,然後回傳一個 iterator of tuple,像拉鍊一樣把 sequence 裡每個 item 鍊在一起變成一個 tuple,以最短的 sequence 為準。
z = zip('Python', range(3)) print(z) # <zip object at 0x03D47AD0> for t in z: print(t) # ('P', 0) # ('y', 1) # ('t', 2)zip 回傳的 zip 物件是一個 iterator 物件,可以用 for-in 讀取每個 item(tuple),不同於 list-like 的地方在於不能用中括號 [N] 讀取指定的 item,也不可以用 list() 轉成 list物件,list() 吃的是 iterable 物件,不是 iterator 物件。
可以搭配多重指定(Tuple assignment)與 for-in 來讀取 Zip 物件。
z = zip('Python', range(9)) for a, b in z: print(a, b) # P 0 # y 1 # t 2 # h 3 # o 4 # n 5
enumerate()
Python 還有一個便捷的函式可以同時取得 sequence 裡的 item 與 index。for index, item in enumerate('Python'): print(index, item) # 0 P # 1 y # 2 t # 3 h # 4 o # 5 n---
---
---
沒有留言:
張貼留言