Skip to main content
 首页 » 编程设计

python之从硬币和数量创建平面列表

2025年05月04日15kuangbin

我有一个硬币数组,例如(coins=[10, 50, 100]) 和每个硬币数量的数组(例如 quantity=[1, 2, 1])。我想生成一个新列表 l,它显示我拥有的所有硬币(例如 l=[10, 50, 50, 100])。

到目前为止,我有这个,它可以解决问题:

coins=[i for s in [b*[a] for a,b in zip(coins,quantity)] for i in s] 

在 python 中有没有比创建列表列表然后展平它更好的方法来解决这个问题?

请您参考如下方法:

您可以利用 itertools 链并重复:

from itertools import repeat,chain 
 
coins=[10, 50, 100] 
quantity=[1, 2, 1] 
 
result = list(chain.from_iterable(map(repeat, coins, quantity))) # thx @ miradulo 
 
print(result) 

输出:

[10, 50, 50, 100] 

优点:它不会构建内部列表然后将其展平,而是将值生成为可迭代对象。