如何根据可能的结果和频率列出n个新的事件列表



我提前道歉,我真的不知道如何解释我的要求。我有一个分数列表和每个分数出现的频率列表,我想对每个出现的分数做一个新的列表。

我一直在尝试一些嵌套的for循环,但输出会用每个频率迭代每个分数。

for x in scores:
for f in freq:
for i in range(f):
desired_output.append(x)

我该如何制作一个新的列表来显示所有结果?

scores = [6, 7, 8, 9]
frequency = [1, 3, 5, 4]
desired_output = [6, 7, 7, 7, 8, 8, 8, 8, 8, 9, 9, 9, 9,]

为了提高性能并减少迭代次数,我建议用toRex:代替第二个例子

scores = [6, 7, 8, 9]
frequency = [1, 3, 5, 4]
ls = []
for s,f in zip(scores,frequency):
ls = ls + [s]*f;
print(ls)
scores = [6, 7, 8, 9]
frequency = [1, 3, 5, 4]
ls= [ [s]*f for s,f in zip(scores,frequency)]
print(ls)

输出

[[6], [7, 7, 7], [8, 8, 8, 8, 8], [9, 9, 9, 9]]

如果你想将嵌套列表减少为一个列表,那么请按照下面的代码进行操作

from functools import reduce
scores = [6, 7, 8, 9]
frequency = [1, 3, 5, 4]
ls= [ [s]*f for s,f in zip(scores,frequency)]
single_ls=reduce(lambda x,y:x+y,ls)
print(single_ls)

最新更新