Python被挑选后从随机列表中删除一个项目

时间:2013-09-19 17:12:15

标签: 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 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)

我希望有所帮助,我试图让我的实际项目保密:=抱歉给您带来不便

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

1 个答案:

答案 0 :(得分:2)

您可以使用random.choicelist.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(colors),但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)