如何在Python中生成n个数字的列表并随机选择一个数字?
我统计了一些东西,结果是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
。