代码之家  ›  专栏  ›  技术社区  ›  froadie

有没有办法让每个循环都并行?

  •  11
  • froadie  · 技术社区  · 16 年前

    for listIndex in range(len(list1)):
       doSomething(list1[listIndex])
       doSomething(list2[listIndex])
    

    但是有没有更直观的方法,使用foreach循环?像这样的 for list1Value in list1, list2Value in list2

    我目前在Python中遇到过这种情况,但这是一个长期存在的问题,我很想知道您是否可以在任何语言中实现这一点(我只是假设Python最有可能拥有处理这个问题的方法。)

    3 回复  |  直到 16 年前
        1
  •  14
  •   integer    16 年前

    像这样的?

    for (a,b) in zip(list1, list2):
      doSomething(a)
      doSomething(b)
    

    尽管如果 doSomething() chain() (来自itertools):

    for x in chain(list1, list2):
      doSomething(x)
    

    from itertools import * izip() 而不是使用 zip() izip_longest() izip(count(), lst) 等。欢迎使用函数式编程。:-)

    for idx, a, b, c in izip(count(), A, B, C):
      ...
    
        2
  •  5
  •   Hound    16 年前

    a = (0,1,2,3,4,5,6,7,8,9)
    b = "ABCDEFGHIJ"
    for pair in zip(a,b):
      print("%d => %s" % pair)
    
        3
  •  4
  •   froadie    16 年前

    zip 或 itertools.izip 为此:

    for item1, item2 in zip(iterable1, iterable2):
        # process the items in parallel
    

    itertools.izip文件 在Python中,3个返回迭代器;i、 他们根据要求提供成对的元组(或三元组、四元组等)。Python<三