我正在尝试生成一个包含10个不同数字的随机列表。这是我到目前为止所做的:
from random import randint
my_list = []
i = 0
while i < 10:
random = randint(1, 25)
if random not in my_list:
my_list.append(random)
i = i + 1
else:
i = i
print(my_list)
但是由于某些原因它不起作用。
(更新:我的列表会将随机数添加为字符串,我需要将其添加为整数)
您可以使用上面的代码,现在可以使用。
答案 0 :(得分:0)
向我直截了当:
from random import randint
my_set = set()
while(len(my_set) < 10):
my_set.add(randint(0, 100))
my_list = list(my_set)
print(my_list)
我的随机输出:
[96, 2, 35, 9, 87, 23, 88, 57, 91, 95]
答案 1 :(得分:0)
使用set
,然后转换为list
,因为list可能包含重复的元素。
示例代码为
from random import randint
my_set = set()
while len(my_set) < 10:
random = randint(1, 25)
my_set.add(str(random))
print(list(my_set))
答案 2 :(得分:0)
您正在将随机数转换为字符串(出于某种原因),然后再将其添加到列表中。稍后,您检查 number 是否为列表中的值(永远不会出现),因为您从未在列表中添加数字。这是该问题的简单演示:
>>> 3 in ['3']
False
不要打扰字符串(或无操作i = i
)。
from random import randint
my_list = []
i = 0
while i < 10:
r = randint(1, 25)
if r not in my_list:
my_list.append(r)
i = i + 1
print(my_list)
您还可以使用一个集合,该集合将自动忽略重复项。
my_set = {}
while len(my_set) < 10:
my_set.add(randint(1,25))
print(my_set)
或使用您正在重新实现的random.sample
:
my_list = random.sample(range(1,26), 10)
答案 3 :(得分:0)
您还可以使用随机库:
import random
mylist = [random.randint(0,100) for item in range(10)]
输出: [4,89,40,56,37,97,73,46,10,36]
random.randint(0,100)->在此指定随机数的范围
range(10)->在您的情况下为10值
希望它可以解决您的问题