如何在Python中同时遍历两个不同长度的列表

时间:2020-01-19 22:16:29

标签: python-3.x for-loop

我使用Python。我创建了两个长度不同的列表:

list_1 = [1, 2, 3, 4, 5];
list_2 = ['a', 'b', 'c'];

我想将数字和字母对打印为

"1a 2b 3c 4a 5b 1c 2a 3b 4c 5a 1b 2c 3a 4b 5c"`

同时浏览两个列表。

以下嵌套的for循环将输出打印为

"1a 1b 1c 2a 2b 2c 3a 3b 3c 4a 4b 4c 5a 5b 5c"`

这不是我想要的:

for num in list_1:
    for letter in list_2:
        print(num, letter)

2 个答案:

答案 0 :(得分:2)

这是使用zipitertools.cycle的解决方案:

>>> a = [1, 2, 3, 4, 5]
>>> b = ['a', 'b', 'c']
>>> from itertools import cycle
>>> for _, x, y in zip(range(len(a) * len(b)), cycle(a), cycle(b)):
...     print(x, y)
... 
1 a
2 b
3 c
4 a
5 b
1 c
2 a
3 b
4 c
5 a
1 b
2 c
3 a
4 b
5 c

或者,使用itertools.islice代替range

from itertools import cycle, islice

for x, y in islice(zip(cycle(a), cycle(b)), len(a) * len(b)):
    print(x, y)

答案 1 :(得分:-1)

>>> a = [1, 2, 3, 4, 5]
>>> b = ['a', 'b', 'c']
>>> for x, y in zip(a * len(b), b * len(a)):
        print(x, y)


1 a
2 b
3 c
4 a
5 b
1 c
2 a
3 b
4 c
5 a
1 b
2 c
3 a
4 b
5 c