每次按键时,我的程序应从列表中获取一个随机名称,然后从列表中删除该名称。有了代码,我现在选择了一个随机名称,但是列表完全清空了。
我已经尝试了for
和while
循环,但是在这种情况下我不确定该使用什么。
x = win.getKey()
while len(members) > 0:
if x:
name = random.choice(members)
members.remove(name)
如上所述,我想绘制一个随机名称,并在每次按键时从列表中删除该名称,直到列表为空。
答案 0 :(得分:2)
您需要将按键提示放入循环中,以使循环暂停并等待每个元素的输入,否则循环将运行至完成并立即清空整个列表。
import random
members = [1,2,3,4,5,6,7,8,9]
while members:
if win.getKey():
choice = random.choice(members)
members.remove(choice)
print(choice)
输出:
8
4
2
3
7
6
9
5
1
如果列表很大,remove
是一种缓慢的线性运算,需要逐一检查列表中的每个元素以找到匹配项。考虑使用快速(摊销)恒定时间pop
操作,该操作使用索引来查找目标元素而不进行搜索:
import random
members = [1,2,3,4,5,6,7,8,9]
while members:
if win.getKey():
choice = members.pop(random.randint(0, len(members) - 1))
print(choice)