首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将列表复制到list2的长度?

如何将列表复制到list2的长度?
EN

Stack Overflow用户
提问于 2019-03-25 07:19:47
回答 4查看 91关注 0票数 3

我有一定长度的list1和一定长度的list2。比方说:

代码语言:javascript
运行
复制
list1 = [32, 345, 76, 54]

list2 = [43, 65, 76, 23, 12, 23, 44]

我需要让list1循环返回,直到它与list2的长度相同。或者,如果list1更长,我需要它缩短到list2的长度。对于上面的示例,我希望实现:

代码语言:javascript
运行
复制
list1 = [32, 345, 76, 54, 32, 345, 76]

它不一定要保持list1。它可以是一个新的列表,我只需要从list1中循环回相同的值一定次数即可。我该怎么做呢?我是python的新手,我还没有找到任何可以工作的东西。

EN

回答 4

Stack Overflow用户

发布于 2019-03-25 07:25:05

了解精彩的itertools模块!

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

result = list(islice(cycle(list1), len(list2)))

如果你只需要“一起”迭代这两个列表,这就更简单了:

代码语言:javascript
运行
复制
for x, y in zip(cycle(list1), list2):
    print(x, y)
票数 6
EN

Stack Overflow用户

发布于 2019-03-25 07:24:36

使用itertools.cycle

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

new_list1 = [element for element, index in zip(cycle(list1), range(len(list2)))]
new_list1

输出:

代码语言:javascript
运行
复制
[32, 345, 76, 54, 32, 345, 76]
票数 2
EN

Stack Overflow用户

发布于 2019-03-25 07:27:26

您可以使用纯Python完成此操作:

代码语言:javascript
运行
复制
list1 = [32, 345, 76, 54]

list2 = [43, 65, 76, 23, 12, 23, 44]

l1, l2 = (len(list1) ,len(list2)) 
diff = (l2- l1) % l2
times = (l2 - l1) // l2
list1 = list1 * (times+1) + list1[:diff]
print(list1)

结果:

代码语言:javascript
运行
复制
[32, 345, 76, 54, 32, 345, 76]

另一种方法是:

代码语言:javascript
运行
复制
list1 = [32, 345, 76, 54]

list2 = [43, 65, 76, 23, 12, 23, 44]

times = len(list1) + (len(list2) - len(list1))
list1 = [list1[i%len(list1)] for i in range(times)]
print(list1)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55329528

复制
相关文章

相似问题

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