因此,我正在创建一个python代码,以从列表中所有问题中随机选择一个问题。当我运行代码时,它从大约200个问题的列表中随机选择一个问题,并显示给我。我想回答这个问题,然后继续下一个。但是,我不想在回答完同样的问题后再听到同样的问题。有什么方法可以确保问题一旦被打印出来,就从列表中删除,从而使其不再出现?因为我本来可以回答一个问题,但必须先回答其他多个问题,然后再回答未回答的特定问题。那么有没有办法确保没有一个问题可以打印一次以上呢?(我不想使用random.sample k = 200来打印所有问题,因为我不想知道接下来要问什么。)任何回应将不胜感激。
我的代码当前如下所示: 随机导入
问题= [ “定义数学”, “定义法语”, '定义英语', ]
结果= random.sample(问题,k = 1) 打印(结果)
除了200个问题
答案 0 :(得分:1)
我认为您可能想要my_list.pop(index)
来删除index
处的项目并返回它(因此,如果您不想完全抛出问题,可以将结果附加到另一个列表中)
答案 1 :(得分:1)
您可以使用random.randrange()
从列表中随机选择项目。完成该项目后,您可以将其从列表中删除。
重复直到列表为空。
import random
questions = [
'define math',
'define french',
'define english',
'define spanish',
'define czech',
'define slovak',
'define whatever',
]
while questions:
# Select random index from the remaining list.
index = random.randrange(0, len(questions))
# Do whatever you want with the selected item.
selected = questions[index]
print(selected)
# Remove the just-selected item from the list using its known index.
questions.pop(index)
输出:
define whatever
define english
define slovak
define spanish
define czech
define french
define math
答案 2 :(得分:0)
肯定会这样:
if not x in myList:
myList.append(x)
其中x是随机数。其他技巧是稍后将列表转换为设置并返回列表:
myList = list(set(myList))
根据您的需要:
import random
questions= [ 'define math', 'define french', 'define english']
results = random.sample(questions, k=1)
if results not in questions:
questions.append(results)
print(questions)
答案 3 :(得分:0)
还有一种简单地创建排列的方法,可以保证在接下来的N个选择中,所有N个问题都被选择,并且可能比纯python方法快得多:
import numpy as np
N=len(sample)
random_order=np.random.permutation(N)
for i in random_order:
next_question=question[i]