首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Python中同时遍历两个不同长度的列表

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

Stack Overflow用户
提问于 2020-01-20 06:16:30
回答 2查看 69关注 0票数 0

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

代码语言:javascript
运行
复制
list_1 = [1, 2, 3, 4, 5];
list_2 = ['a', 'b', 'c'];

我想打印出成对的数字和字母

代码语言:javascript
运行
复制
"1a 2b 3c 4a 5b 1c 2a 3b 4c 5a 1b 2c 3a 4b 5c"`

同时遍历两个列表。

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

代码语言:javascript
运行
复制
"1a 1b 1c 2a 2b 2c 3a 3b 3c 4a 4b 4c 5a 5b 5c"`

这不是我想要的:

代码语言:javascript
运行
复制
for num in list_1:
    for letter in list_2:
        print(num, letter)
EN

回答 2

Stack Overflow用户

发布于 2020-01-20 06:19:04

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

代码语言:javascript
运行
复制
>>> 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

代码语言:javascript
运行
复制
from itertools import cycle, islice

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

Stack Overflow用户

发布于 2020-01-21 00:23:32

代码语言:javascript
运行
复制
>>> 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
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59814888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档