我已经查询了很多次,似乎设置是最好的选择,但是对于此作业,我认为这是不允许的。因此,基本上,我做了一个空列表,它生成了一个长度为5个元素且内部数字在1到9之间的列表。但是所有数字都必须在列表中出现一次。我怎么做?
import random
lis = []
for i in range(1,6):
x = random.randint(1,9)
lis.append(x)
我尝试过,
if x not in lis:
lis.append(x)
但是我的名单长度不断变化。
答案 0 :(得分:2)
IIUC,您可以在最初尝试的while
语句旁边使用if
:
import random
lis = []
while len(lis) < 5:
x = random.randint(1,9)
if x not in lis:
lis.append(x)
>>> lis
[2, 8, 1, 5, 3]
但是,如果您想棘手,可以这样做:
x = list(range(1,10))
random.shuffle(x)
>>> x[:5]
[2, 1, 4, 3, 7]
或
import numpy as np
>>> np.random.choice(range(1,10),5,replace=False)
array([7, 5, 3, 6, 4])
答案 1 :(得分:2)
您可以像Sacul在while循环中所说的那样执行此操作,但这是另一个不错的选择,但是您的作业可能不允许这样做。
import random
lis = random.sample(range(1,10),5)