如何显示然后从列表中删除随机字符串?

时间:2014-12-11 15:44:02

标签: python list

我想为我的班级制作科学宾果游戏。此代码目前从列表中随机选择一个元素并显示它,但我不知道如何从列表中删除该值,因此不会随机重新打印。

from random import randint
bingo=["H", "He", "C", "O"]
total=((len(bingo))-1)
while (total>0):
    finish=input("Bingo?")
    if (finish=="no"):
        a=randint(0,int(total))
        b=(bingo[int(a)])
        print (b)

4 个答案:

答案 0 :(得分:3)

无需从列表中删除。只需将其洗牌并迭代一次即可。它会更快,您可以重复使用原始列表。所以random.shuffle(bingo)然后迭代bingo

以下是将其合并到原始代码中的方法:

import random
bingo=["H", "He", "C", "O"]
random.shuffle(bingo)
for item in bingo:
    if input("Bingo?") == "no":
        print item
    else:
        break

答案 1 :(得分:0)

阅读后,使用del

del bingo[int(a)]

答案 2 :(得分:0)

如果您想要在有几个选项后执行此操作

1)使用随机索引并弹出

import random

i = random.randrange(0, len(bingo))
elem = bingo.pop(i)  # removes and returns element

2)使用随机选择删除

import random

elem = random.choice(bingo)
bingo.remove(elem)

如果你想以随机顺序排列所有元素,那么你最好只是改变列表,然后迭代它,或者反复调用pop

import random

random.shuffle(bingo)
for elem in bingo: # list is not shuffled
    ...

import random

random.shuffle(bingo)
while bingo:
    elem = bingo.pop()
    ...

答案 3 :(得分:-1)

foo = ['a', 'b', 'c', 'd', 'e']
from random import randrange
random_index = randrange(0,len(foo))

用于显示:

print foo[random_index]

删除:

foo = foo[:random_index] + foo[random_index+1 :]