2013-04-04 59 views
0

需要運行兩個列表。帶索引的迭代2列表的簡單語法

有沒有辦法讓它更容易?

for idx, (l1, l2) in enumerate(zip(list1, list2)): 
+2

有什麼不容易呢? – 2013-04-04 12:30:09

+0

你的意思是* magic *? – 2013-04-04 12:30:33

+0

我並不是說這不容易。我問,這樣做更容易。 :) – Des333 2013-04-04 12:31:06

回答

3

另一種選擇,但我更喜歡的解決方案中的問題,就是:

from itertools import count 

for i, x, y in zip(count(), seq1, seq2): 
    pass 
+0

這實際上很聰明 - 我不會想到它。 – mgilson 2013-04-04 12:33:34

+0

你確定這樣比較好嗎?我認爲在zip壓縮邏輯中對count()的額外函數調用會比壓縮後枚舉邏輯更重。 不管怎麼樣[izip](http://docs.python.org/2/library/itertools.html#itertools.izip)? – 2013-04-04 12:38:38

+0

@InbarRose在我的回答中,我確實說過我不喜歡這個,儘管有些人可能會這麼做。至於速度我不知道,這似乎會更快,但這只是一個猜測。 'izip'當然會更有效Python 2 – jamylak 2013-04-04 12:41:40

0

對於不同長度的名單我會用izip_longest相反,它應該是這樣的:

from itertools import izip_longest 

for index, (item1, item2) in enumerate(izip_longest(list1, list2, fillvalue=None)): 
    # code