2011-09-02 189 views
2

是否可以在python中同時執行多個循環?同時執行多個for循環

贊(語法錯誤,當然):

for a,b in list_of_a,list_of_b: 
     //do some thing 

通過同時,我表示線程或進程的意義。

我的意思是,它們在迭代期間共享相同的索引或遊標。

我能想到實現這個的是:

  1. 使用int變量作爲一個共享光標
  2. 把它們放在一個元組列表和循環數組列表。但創建列表是費力的

我只是想知道是否有一些內置函數或更簡單的語法來實現。

+1

如果你想要的是嵌套循環,而不是同時循環,使用'itertools.product'。如果list只是另一個的索引,則使用'enumerate'。 – agf

+0

有用的工具,謝謝。這是我得到的獎金。 :-) – xiaohan2012

回答

9
for a,b in zip(list_of_a, list_of_b): 
    # Do some thing 

如果你使用的是Python 2.x中,擔心性能和/或使用,而非列表迭代器,考慮itertools.izip而不是zip

在Python 3.x中,zip取代了itertools.izip;使用list(zip(..))來獲取舊的(2.x)zip行爲返回一個列表。

+0

說明:'zip'從其參數中創建一個元組列表。 – katrielalex

2
import itertools 
for a, b in itertools.izip(list_a, list_b): 
    # ...