如何并行迭代两个数组? [复制]

2023-12-01

我看起来能够并行迭代两个数组(或仅使用一个 for 循环)。

这是我尝试过的脚本...

#!/usr/bin/env python

list1 = [ 'one', 'two', 'three' ]
list2 = [ 'I', 'II', 'III', 'IV', 'V' ]

for word in list1:
    print word + " from list1"

for roman in list2:
    print roman + " from list2"

for ( word, roman ) in (list1 list2):
         if word:
                 print word + " from list1"

    if roman:
        print roman + " from list2"

但显然是不正确的,因为我收到语法错误:

  File "./twoarr.py", line 12
    for ( word, roman ) in (list1 list2):
                                      ^
SyntaxError: invalid syntax

我正在尝试获得如下所示的输出:

one from list1
I from list2
two from list1
II from list2
three from list1
III from list2
IV from list2
V from list2

要迭代多个列表,您可以使用内置函数zip。根据文档,此函数返回一个元组列表,其中第 i 个元组包含每个参数序列或可迭代对象中的第 i 个元素。因此,应用于您的特定示例

list1 = [ 'one', 'two', 'three' ]
list2 = [ 'I', 'II', 'III', 'IV', 'V' ]

for word in list1:
    print word + " from list1"

for roman in list2:
    print roman + " from list2"

for word, roman in zip(list1, list2):
    print word + " from list1"
    print roman + " from list2"
   

zip 的唯一缺点是,当您的列表(如此例中所示)长度不相等时,zip 将返回一个元组列表,每个元组的维度等于较小的元组。为了支持最长的一个,并在必要时填充 None,只需将 zip 替换为itertools.izip_longest:

from itertools import izip_longest

list1 = [ 'one', 'two', 'three' ]
list2 = [ 'I', 'II', 'III', 'IV', 'V' ]

for word in list1:
    print word + " from list1"

for roman in list2:
    print roman + " from list2"

for word, roman in izip_longest(list1, list2):
    print word + " from list1"
    print roman + " from list2"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何并行迭代两个数组? [复制] 的相关文章