首页 > 解决方案 > 有没有办法用长度可能不是大列表长度的整数倍的较小列表中的元素填充大列表?

问题描述

我有一个列表,我知道它会很大,但长度可能会有所不同,例如length = 52。我有一个较小的奇数列表,其长度也可能不同,但永远不会与 large_list 的大小相似,例如

small_ints=[31,33,35,37,39,41]

我想将小清单复制到我的大清单中以提供

large_list = [31,31,31,31,31,33,33,33,33,33,35,35,...41]
len(large_list) = 52

每个数字重复完全相同的次数并不重要,大约可能就足够了。

我几乎找到了一个预先分配列表的地方,large_list=[None]*53但后来出现了错误,现在我什至找不到给我有用提示的 Stack Overflow 页面。

标签: pythonpython-3.x

解决方案


这个怎么样?

numbers = [31, 33, 35, 37, 39, 41]
size = 11

n_copies = size // len(numbers)
excess = size % len(numbers)

result = sorted([element 
                 for i in range(n_copies) 
                 for element in numbers] + numbers[:excess]) 

print(result)
print(len(result))

输出:

[31, 31, 33, 33, 35, 35, 37, 37, 39, 39, 41]
11

这使得尽可能多的副本numbers在组合时不会超过size. 如果有差异,则填充来自 的元素numbers。然后对整个事物进行排序以将相同的值组合在一起。

您可以更改size为 52(我使用 11,因此输出会更短)。


推荐阅读