假设我有一份颜色列表,colours = ['red', 'blue', 'green', 'purple']
然后我希望调用我希望存在的这个python函数random_object = random_choice(colours)
。
现在,如果random_object持有'blue',我希望colours = ['red', 'green', 'purple']
。
python中是否存在这样的函数?
答案 0 :(得分:8)
首先,如果您想要一次又一次地删除它,您可能希望在随机模块中使用random.shuffle()
。
random.choice()
选择一个,但不删除它。
否则,请尝试:
import random
# this will choose one and remove it
def choose_and_remove( items ):
# pick an item index
if items:
index = random.randrange( len(items) )
return items.pop(index)
# nothing left!
return None
答案 1 :(得分:6)
from random import shuffle
def walk_random_colors( colors ):
# optionally make a copy first:
# colors = colors[:]
shuffle( colors )
while colors:
yield colors.pop()
colors = [ ... whatever ... ]
for color in walk_random_colors( colors ):
print( color )