在Python中,如何将enumerate和itertools.izip组合使用?

5
我想在Python中迭代和枚举两个列表。以下代码看起来很丑陋。有更好的解决方案吗?
for id, elements in enumerate(itertools.izip(as, bs)):
  a = elements[0]
  b = elements[1]
  # do something with id, a and b

谢谢。

2个回答

18

你可以在for循环期间分配a和b:

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

2
你可以相信Python有一个漂亮而简单的解决方案 :)。 - Peter Collingridge

12

你可以使用itertools.count代替enumerate

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

注意,我稍微改变了变量名以避免使用保留字和内置函数的名称。


1
按照PEP-8更改变量名称很好,但使用itertools.count而不是enumerate并不是一种改进。 - jamylak
在我看来,这是一种改进,因为您可以使用itertools.izip(itertools.count(), as_, bs)表达式作为multiprocessing.pool.map_async()的参数,而使用for循环不太方便。 - user1898037

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接