fro*_*die 11 python iteration parallel-processing foreach
假设我在Python中有2个列表,我想并行遍历每个列表 - 例如对两个列表执行元素1的操作,对两个列表执行元素2的操作...我知道我可以通过使用指数:
for listIndex in range(len(list1)):
doSomething(list1[listIndex])
doSomething(list2[listIndex])
Run Code Online (Sandbox Code Playgroud)
但是有没有办法通过foreach循环更直观地做到这一点?有点像for list1Value in list1, list2Value in list2......?
我目前在Python中遇到过这种情况,但这是一个长期存在的问题,我很想知道你是否能用任何语言做到这一点.(我只是假设Python最有可能有一个方法来解决这个问题.)
int*_*ger 14
像这样的东西?
for (a,b) in zip(list1, list2):
doSomething(a)
doSomething(b)
Run Code Online (Sandbox Code Playgroud)
虽然如果doSomething()没有进行I/O或更新全局状态,并且它一次只能处理其中一个元素,顺序无关紧要,所以你可以使用chain()(来自itertools):
for x in chain(list1, list2):
doSomething(x)
Run Code Online (Sandbox Code Playgroud)
Apropos,from itertools import *我经常做的事情.考虑izip()而不是使用zip()我上面给出的.还应考虑izip_longest(),izip(count(), lst)等欢迎的功能编程.:-)
哦,压缩也适用于更多的"列":
for idx, a, b, c in izip(count(), A, B, C):
...
Run Code Online (Sandbox Code Playgroud)
这将取决于语言。Python实际上有一个相当简单的方法:
a = (0,1,2,3,4,5,6,7,8,9)
b = "ABCDEFGHIJ"
for pair in zip(a,b):
print("%d => %s" % pair)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2814 次 |
| 最近记录: |