Python从随机列表中删除拾取后的项目

Python从随机列表中删除拾取后的项目,python,random,Python,Random,如何允许random.choice从列表中选择一个项目(一次、两次或三次),然后将其从列表中删除 例如,它可以是1-10,并且在拾取数字1后,在程序重置之前不再允许拾取1 这是一个虚构的例子,用颜色和数字代替我的单词 colors = ["red","blue","orange","green"] numbers = ["1","2","3","4","5"] designs = ["stripes","dots","plaid"] random.choice (colors) if colo

如何允许random.choice从列表中选择一个项目(一次、两次或三次),然后将其从列表中删除

例如,它可以是1-10,并且在拾取数字1后,在程序重置之前不再允许拾取1

这是一个虚构的例子,用颜色和数字代替我的单词

colors = ["red","blue","orange","green"]
numbers = ["1","2","3","4","5"]
designs = ["stripes","dots","plaid"]

random.choice (colors)
if colors == "red":
    print ("red")
    random.choice (numbers)
    if numbers == "2":##Right here is where I want an item temporarily removed(stripes for example)
        random.choice (design)
我希望这能有所帮助,我正在努力为我的实际项目保密=\对于给您带来的不便,我深表歉意


忘记在代码中提及,在选中需要删除的红色后

您可以使用
random.choice
list.remove

from random import choice as rchoice

mylist = range(10)
while mylist:
    choice = rchoice(mylist)
    mylist.remove(choice)
    print choice
或者,正如
@Henry Keiter
所说,您可以使用
random.shuffle

from random import shuffle

mylist = range(10)
shuffle(mylist)
while mylist:
    print mylist.pop()
如果在此之后仍需要将列表洗牌,可以执行以下操作:

...
shuffle(mylist)
mylist2 = mylist
while mylist2:
    print mylist2.pop()
现在,您将获得一个空列表mylist2,以及您的无序列表mylist

编辑 关于你发布的代码。你正在写
random.choice(颜色)
,但是
random.choice
做什么呢?它选择随机答案并返回(!)它。所以你必须写作

chosen_color = random.choice(colors)
if chosen_color == "red":
    print "The color is red!"
    colors.remove("red") ##Remove string from the list
    chosen_number = random.choice(numbers)
    if chosen_number == "2":
        chosen_design = random.choice(design)

您可以使用
random.choice
list.remove

from random import choice as rchoice

mylist = range(10)
while mylist:
    choice = rchoice(mylist)
    mylist.remove(choice)
    print choice
或者,正如
@Henry Keiter
所说,您可以使用
random.shuffle

from random import shuffle

mylist = range(10)
shuffle(mylist)
while mylist:
    print mylist.pop()
如果在此之后仍需要将列表洗牌,可以执行以下操作:

...
shuffle(mylist)
mylist2 = mylist
while mylist2:
    print mylist2.pop()
现在,您将获得一个空列表mylist2,以及您的无序列表mylist

编辑 关于你发布的代码。你正在写
random.choice(颜色)
,但是
random.choice
做什么呢?它选择随机答案并返回(!)它。所以你必须写作

chosen_color = random.choice(colors)
if chosen_color == "red":
    print "The color is red!"
    colors.remove("red") ##Remove string from the list
    chosen_number = random.choice(numbers)
    if chosen_number == "2":
        chosen_design = random.choice(design)

那你打算怎么办?就我个人而言,我可能会跳过“随机选择”,而不是“随机选择”列表,然后“随机选择”最后一项,但向我们展示你已经尝试过的内容。也许只需跟踪到目前为止你选择的项目,而不要从中选择。问题是,如果你已经从大集合中选择了大部分项目,那么可能需要一段时间才能使用随机数找到一个尚未选择的项目。从列表中弹出该项目只会允许每个项目正确选择一次?我正在寻找的东西,像第一号可以画3次,然后删除,因为没有被挑选again@user2795843看看我修改过的答案好吧,你会怎么做?就我个人而言,我可能会跳过“随机选择”,而不是“随机选择”列表,然后“随机选择”最后一项,但向我们展示你已经尝试过的内容。也许只需跟踪到目前为止你选择的项目,而不要从中选择。问题是,如果你已经从大集合中选择了大部分项目,那么可能需要一段时间才能使用随机数找到一个尚未选择的项目。从列表中弹出该项目只会允许每个项目正确选择一次?我正在寻找的东西,像第一号可以画3次,然后删除,因为没有被挑选again@user2795843查看我修改过的答案将列表洗牌一次就足够了,然后继续弹出。。。不需要一直洗牌。。。你也不需要检查长度,只要它是真实的<代码>洗牌(mylist);while(mylist):打印mylist.pop()将足够大,编辑应答器oops-不需要
()
围绕
while(mylist)
也可以。。。对不起-复制你的例子太接近:)哦,是的。有时我也会忘记python的
()
:)新手,while到底做什么?只需将列表洗牌一次,然后继续弹出即可。。。不需要一直洗牌。。。你也不需要检查长度,只要它是真实的<代码>洗牌(mylist);while(mylist):打印mylist.pop()将足够大,编辑应答器oops-不需要
()
围绕
while(mylist)
也可以。。。对不起-复制你的例子太接近:)哦,是的。有时我也会忘记python的
()
:)新手,while到底做什么?