Python随机获取名称

2024-04-20 12:47:58 发布

您现在位置:Python中文网/ 问答频道 /正文

好吧,我有个问题。我正在创建一个脚本,从提供的名称列表中随机获取一个名称,并在5个列表中生成它们。我知道你可以使用命令

items = ['names','go','here']

rand_item = items[random.randrange(len(items))]

如果我没搞错的话,这应该是从列表中随机抽取一个项目。虽然如果我错了,请纠正我,但我的问题是如何让它产生,比如一个5个名字的列表,如下所示

^{pr2}$

如果我连续运行5天,它不会以相同的顺序重复名称,有没有办法做到这一点?在

我很感激你能给我的任何帮助,或者我现有代码中的任何错误。在

编辑: 我的脚本的一般用途是每周5天,每天为一组用户生成任务分配。我要找的是在5个不同的旋转中生成这些名称的方法。在

我为你的困惑道歉。虽然一些返回的答案会有所帮助。在

编辑2: 好吧,我想我基本上已经有了我想要的东西,谢谢你Markus Meskanen&mescalinum,我用了你们两个的代码来解决这个问题。我非常感激。下面是我现在使用的代码。在

import random
items = ['items', 'go', 'in', 'this', 'string']
rand_item = random.sample(items, 5)
for item in random.sample(items, 5):
print item

Tags: sample代码in命令脚本名称编辑go
3条回答

在你的问题中,如果你只是想洗牌项目或选择一个子集。据我所知你想要第二个案子。在

您可以使用random.sample,从python中的列表中获取给定数量的随机项。如果我想从5个字母的列表中随机抽取3个项目,我会这样做:

>>> import random
>>> random.sample(['a', 'b', 'c', 'd', 'e'], 3)
['b', 'a', 'e']

注意,字母不一定按相同的顺序返回-'b''a'之前返回,尽管在原始列表中不是这样。在

关于你问题的第二部分,防止它产生 以相同的字母顺序,您可以将每个新生成的子列表追加到一个文件中,在脚本执行期间检索该文件并生成一个新的子列表,直到它与以前生成的每个子列表不同为止。在

您可以使用^{}只获取一个项目:

items = ['names','go','here']
rand_item = random.choice(items)

现在只需重复这5次(a for循环!)在

如果您希望名称只是随机顺序,请使用^{}每次都得到不同的结果。在

^{}适合于随机选择元素。在

但是,如果要随机选择多个元素而不重复,可以使用^{}

for item in random.sample(items, 5):
    print item

对于最后一个问题,您应该相信(伪)随机生成器不会在连续两天内给出相同的序列。随机种子在默认情况下是用当前时间初始化的,因此不太可能在连续两天观察到相同的序列,尽管这并非不可能,尤其是在项目数量很少的情况下。在

如果您确实需要避免这种情况,请将最后一个序列保存到一个文件中,并在洗牌之前加载它,并继续洗牌,直到它给出不同的顺序。在

相关问题 更多 >