如何确保random.choice()没有两次选择同一个项目?

时间:2014-10-11 16:27:27

标签: python python-3.x tkinter

我正在进行测验。这意味着我必须为列表生成随机问题,但我需要确保不再重复问题。我正在使用Python 3.1.4,但我不知道如何确保它检查字符串是否尚未生成。我用来生成字符串的代码是:

generated_question = random.choice(question_list)

3 个答案:

答案 0 :(得分:3)

不要使用choice,而是考虑使用shuffle.pop

question_order = question_list[:] # make a copy of the input list
random.shuffle (question_order)
for i in range(5):
    print(question_order.pop())

这将打印出五个问题(假设你的名单中至少有这么多),没有重复。

答案 1 :(得分:0)

您可以创建一份列表副本,并在从该副本中询问后删除每个问题:

question_list_2 = question_list
while len(question_list_2) > 0: #use all questions
    generated_question = random.choice(question_list_2)
    print(generated_question)
    question_list_2.remove(generated_question)

这将打印所有问题,每个问题只打印一次。

答案 2 :(得分:0)

您只需要在选择状态下使用示例函数 random.sample(“您的列表或任何事物名称”,k =“您想要的随机对象的数量”) 轻松地,您必须这样做:

import random
import string
str_list = string.ascii_lowercase
print(random.sample(str_list, 5))

,输出将是:

['l', 'o', 'r', 'p', 'm']