生成具有不同数字的随机列表

时间:2018-12-06 16:44:19

标签: python python-3.x

我正在尝试生成一个包含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)

但是由于某些原因它不起作用。

(更新:我的列表会将随机数添加为字符串,我需要将其添加为整数)

您可以使用上面的代码,现在可以使用。

4 个答案:

答案 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值

希望它可以解决您的问题