我使用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)
答案 0 :(得分:2)
这是使用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)
答案 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