Python 如何并行迭代两个列表

Python 如何并行迭代两个列表

在Python中,使用for循环常用于迭代单个数据结构,如列表,但如果我们需要同时迭代两个/多个列表怎么办?在本文中,我们将看到不同的方法来并行迭代两个/多个列表。

通过使用range()函数,我们可以并行迭代两个列表。让我们看下面的示例以及我们如何在Python中并行迭代两个列表。

如果两个列表的长度相同,使用for循环

假设两个列表的长度相同,在这里我们使用len()方法来获取列表对象的长度。

示例

l1 = ['a', 'b', 'c', 'd', 'e']
l2 = [97, 98, 99, 100, 101]
length = len(l1) # Assuming both lists have same length

for i in range(length):
    print(l1[i], l2[i])

输出

a 97
b 98
c 99
d 100
e 101

如果两个列表的长度不相同

假设两个列表是不相等的,我们将使用最小长度的范围来迭代for循环。

例子

L1 = [1, 2, 3, 4, 5, 6, 7]
L2 = ['a', 'b', 'c']
length = len(L1) if len(L1)<=len(L2)else len(L2)

for i in range(length):
    print(L1[i], L2[i])

输出

1 a
2 b
3 c

列表对象l1, l2的长度分别为7和3,我们将最小长度3应用于range()函数,以便成功地同时迭代这两个列表。注意:如果我们使用最大长度来迭代for循环,那么它将引发IndexError。

使用zip()函数

zip()函数是一个python内置函数,它返回一个zip对象,表示元组的迭代器。zip()函数运行到所有可迭代对象中的最小长度。

例子

l1 = [1, 2, 3, 4, 5, 6, 7]
l2 = ['a', 'b', 'c']

for ele_l1, ele_l2 in zip(l1, l2):
    print(ele_l1, ele_l2)

输出

1 a
2 b
3 c

与前面的例子一样,zip()函数也会在两个输入可迭代对象的最小长度上迭代for循环。

使用itertools.zip_longest()方法

zip_longest()方法接受多个可迭代对象作为参数并返回一个迭代器。该函数的工作方式与zip()函数完全相同,但它是基于最长的输入可迭代对象工作。

语法

zip_longest( iterable1, iterable2, fillval)

示例

不匹配的元素默认填充为None,我们可以使用fillvalue参数指定填充值。在使用zip_longest()函数之前,我们需要首先导入itertools模块。

import itertools 

l1 = [1, 2, 3, 4, 5, 6, 7]
l2 = ['a', 'b', 'c']

for ele_l1, ele_l2 in itertools.zip_longest(l1,l2):
    print(ele_l1, ele_l2)

输出

1 a
2 b
3 c
4 None
5 None
6 None
7 None

例子

在这个例子中,我们成功地并行迭代了3个列表。

import itertools 

l1 = [1, 2, 3, 4, 5, 6, 7]
l2 = ['a', 'b', 'c', 'd', 'e']
l3 = [10, 11, 12, 13]

for ele_l1, ele_l2, ele_l3 in itertools.zip_longest(l1, l2, l3):
    print(ele_l1, ele_l2, ele_l3)

输出

1 a 10
2 b 11
3 c 12
4 d 13
5 e None
6 None None
7 None None

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程