如何在Python中生成n个数字的列表并随机选择一个数字?

33 投票
8 回答
129235 浏览
提问于 2025-04-17 03:10

我统计了一些东西,结果是N。

现在我想要一个列表,里面包含从1到N的数字。

举个例子:

N = 5

那么,count_list = [1, 2, 3, 4, 5]

而且,一旦我创建了这个列表,我想从中随机选择一个数字来使用。

之后,我还想从剩下的数字中(N-1个)再选择一个数字来使用。

这个过程会一直进行,直到列表为空为止。

8 个回答

2

关于第一部分:

>>> N = 5
>>> count_list = [i+1 for i in xrange(N)]
>>> count_list
[1, 2, 3, 4, 5]
>>>

至于第二部分,可以看看 9.6. random — 生成伪随机数

>>> from random import choice
>>> a = choice(count_list)
>>> a
1
>>> count_list.remove(a)
>>> count_list
[2, 3, 4, 5]

这就是大致的想法。

顺便提一下,你可能也会对 从列表中随机选择元素且不重复(Python 代码示例) 感兴趣。

这里有几种快速随机选择的实现方式。

7

你可以试试这段代码

import random
N = 5
count_list = range(1,N+1)
random.shuffle(count_list)

while count_list:
    value = count_list.pop()
    # do whatever you want with 'value'
41

你可以通过类似下面的方式来创建元素的枚举:

mylist = list(xrange(10))

然后你可以使用 random.choice 函数来选择你的项目:

import random
...
random.choice(mylist)

正如 Asim Ihsan 正确指出的,我的回答并没有解决提问者的全部问题。要从列表中移除值,只需调用 list.remove() 即可:

import random
...
value = random.choice(mylist)
mylist.remove(value)

正如 takataka 指出的,内置的 xrange 函数在 Python 3 中被重命名为 range

撰写回答