这是我写的代码:
import random
numberList = []
while len (numberList) != 24:
number = random.randint (1, 12)
if numberList.count (number) < 2
numberList.append (number)
我的问题是While循环可以在填充numberList之前循环超过100次,因此非常低效。
是否有更清晰,更有效的方式来编码我想要做的事情?
答案 0 :(得分:5)
import random
my_list = range(1,13)*2
random.shuffle(my_list)
答案 1 :(得分:1)
reduce(lambda x,y:x+y,[ [i]*2 for i in range(1,13) ])
输出:
[1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12]
答案 2 :(得分:0)
您可以跟踪已添加两次的号码,并将其从数字源中删除。因此,不需要使用randomint(1,12),而是需要修改它以从整数列表中随机选择。
答案 3 :(得分:0)
以下是一些适用于Python 2和3的代码(range
是3中的生成器,必须手动转换为list
):
import random
number_list = list(range(1,13)) * 2
random.shuffle(number_list)
print(number_list)
# [9, 5, 11, 6, 3, 4, 9, 7, 4, 6, 3, 11, 1,
# 12, 8, 10, 7, 2, 1, 8, 2, 5, 10, 12]
答案 4 :(得分:0)
我认为这可能是解决方案:
import numpy as np
import random
myArray=np.append((random.sample(range(1,13), 12)),(random.sample(range(1,13), 12)))
print myArray