如何从列表中选择一个随机元素并将其删除?

时间:2010-09-24 22:13:09

标签: python random

假设我有一份颜色列表,colours = ['red', 'blue', 'green', 'purple'] 然后我希望调用我希望存在的这个python函数random_object = random_choice(colours)。   现在,如果random_object持有'blue',我希望colours = ['red', 'green', 'purple']

python中是否存在这样的函数?

2 个答案:

答案 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 )