请帮助我从随机数0..9创建329个元素的列表,并将每个元素重复一次作为列表:list = [18, 70, 56, 30, 24, 18, 28, 54, 21, 10]
,每个元素都是一个列表
ret = []
for i in range(329):
new = []
答案 0 :(得分:2)
因此,假设您有一个包含频率列表的列表:
lst = [18, 70, 56, 30, 24, 18, 28, 54, 21, 10]
您只需使用以下命令即可生成您的ret
列表
ret = [k for k, freq in enumerate(lst) for i in range(freq)]
所以它包含18个零,70个等等,然后简单地将其洗牌:
import random
random.shuffle(ret)
编辑
一个带有较小集合的简单示例:
>>> import random
>>> lst = [2, 4, 1, 3, 5, 3, 3, 2, 1, 1]
>>> ret = [k for k, freq in enumerate(lst) for i in range(freq)]
>>> ret
[0, 0, 1, 1, 1, 1, 2, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 8, 9]
>>> random.shuffle(ret)
>>> ret
[1, 0, 1, 4, 4, 1, 5, 3, 7, 1, 3, 4, 6, 5, 4, 5, 7, 8, 3, 6, 4, 6, 0, 2, 9]
答案 1 :(得分:1)
您的问题非常令人困惑,但这是您想要的吗?
my_list = [18, 70, 56, 30, 24, 18, 28, 54, 21, 10]
new_list = []
for i, x in enumerate(my_list):
for v in range(x):
new_list.append(i)
print(new_list)
PD-不好的做法是在代码中使用保留名称(列表)。
答案 2 :(得分:1)
根据您对我的第一个答案的评论,此处相同,但使用0-9之间的随机数。
ResourceRegistrar