2011-08-18 33 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