2011-08-18 30 views
3

我想在Python中遍歷+列舉兩個列表。下面的代碼看起來很醜。有沒有更好的解決方案?在Python中結合枚舉+ itertools.izip

for id, elements in enumerate(itertools.izip(as, bs)): 
    a = elements[0] 
    b = elements[1] 
    # do something with id, a and b 

謝謝。

回答

12

您可以在for循環分配和b:

for id, (a, b) in enumerate(itertools.izip(as, bs)): 
    # do something with id, a and b 
+1

哦,相當不錯,很簡單。 –

+0

你可以相信Python有一個不錯的和簡單的解決方案:)。 –

9

你可以使用itertools.count代替enumerate

for id_, a, b in itertools.izip(itertools.count(), as_, bs): 
    # do something with id_, a and b 

請注意,我已經改變了變量名稍微避免保留字和內建的名稱。

+1

根據PEP-8對變量名進行了很好的改變,使用'enumerate'上的itertools.count'實際上並沒有改進。 – jamylak

+0

恕我直言,這是一個改進,因爲你可以使用itertools.izip(itertools.count(),as_,bs)'experssion作爲'multiprocessing.pool.map_async()'的參數,這對於for循環。 – user1898037