假设我在Python中有两个列表,我想并行地遍历每个列表—例如,对两个列表使用元素1,对两个列表使用元素2。。。我知道我可以通过使用索引来实现这一点:
for listIndex in range(len(list1)):
doSomething(list1[listIndex])
doSomething(list2[listIndex])
但是,有没有一种方法可以更直观地使用foreach循环来实现这一点呢?像for list1Value in list1, list2Value in list2
。。。?在
我目前在Python中遇到过这种情况,但这是一个长期存在的问题,我很想知道您是否可以用任何语言来实现这一点。(我只是假设Python最有可能有一种方法来处理这个问题。)
那要看语言了。Python实际上有一个相当简单的方法:
使用}进行此操作:
zip
或{Python中的
itertools.izip
<;3和Python中的zip
返回迭代器;也就是说,它们根据请求提供成对元组(或三元组、四元组等)。Python<;3zip
创建了一个元组列表,因此如果最小的序列非常长,那么内存需求可能会很大。在像这样?在
尽管如果
^{pr2}$doSomething()
不执行I/O或更新全局状态,并且它一次只对其中一个元素起作用,那么顺序并不重要,因此可以使用chain()
(来自itertools):顺便说一下,
from itertools import *
是我经常做的事情。考虑izip()
,而不是使用我上面给出的zip()
。另外请看一下izip_longest()
,izip(count(), lst)
等。欢迎来到函数式编程。:-)噢,而且拉链也适用于更多的“列”:
相关问题 更多 >
编程相关推荐