我使用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)发布于 2020-01-20 06:19:04
这是一个使用zip和itertools.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)发布于 2020-01-21 00:23:32
>>> 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 chttps://stackoverflow.com/questions/59814888
复制相似问题