我需要使用def函数创建一个随机数字列表,没有重复项。
我尝试使用下面的两个函数,但它们最终都产生一个单一值
import random
def fill(nx, x, y):
lx = []
j = 0
while (j < nx):
r = random.randint(x, y)
if r not in lx:
lx.append(r)
j = j + 1
return lx
n = 25
a = 10
b = 50
myList = fill(n, a, b)
print(myList)
和
import random
def fill(nx, x, y):
lx = []
for j in range(nx):
randNum = random.randint(x, y)
if randNum not in lx:
lx.append(randNum)
return lx
n = 25
a = 10
b = 50
myList = fill(n, a, b)
print(myList)
它们都只将一个整数添加到列表中,我不知道如何使它添加所有25个需要的整数。如果我能在正确的方向上得到任何提示,那将是很大的帮助!也很抱歉,如果有任何第一次张贴的话,格式怪异。
答案 0 :(得分:1)
您真的很亲近。 return语句与函数一起工作的方式是,一旦按下return语句,函数便会结束。由于return语句位于附加行之后,因此它将添加一个数字,然后退出该函数。您需要将返回语句转移到与for循环相同的行,以确保执行for循环,但要做到这一点还不错。
import random
def fill(nx, x, y):
lx = []
for j in range(nx):
randNum = random.randint(x, y)
if randNum not in lx:
lx.append(randNum)
return lx
n = 25
a = 10
b = 50
myList = fill(n, a, b)
print(myList)
输出:
[11, 29, 16, 33, 20, 22, 48, 47, 25, 28, 38, 30, 36, 40]
答案 1 :(得分:0)
您可以使用random.sample
:
import random
def fill(nx, x, y):
return random.sample(range(x, y + 1), nx)
fill(25, 10, 50)
的示例输出:
[25, 45, 35, 42, 24, 41, 43, 14, 36, 13, 46, 32, 29, 28, 22, 47, 39, 10, 30, 21, 33, 31, 17, 44, 34]