python – 如何从列表中选择随机项目,同时避免连续选择相同的项目

我想用随机值迭代列表.但是,我希望从列表中删除已选择的项目以进行下一次试用,以便我可以避免连续选择相同的项目;但它应该在之后再添加.

请帮我看一下这个简单的例子.
谢谢

import random
    l = [1,2,3,4,5,6,7,8]
    for i in l:
        print random.choice(l)
最佳答案
两者都适用于非唯一元素列表:

def choice_without_repetition(lst):
    prev = None
    while True:
        i = random.randrange(len(lst))
        if i != prev:
            yield lst[i]
            prev = i

要么

def choice_without_repetition(lst):
    i = 0
    while True:
        i = (i + random.randrange(1, len(lst))) % len(lst)
        yield lst[i]

用法:

lst = [1,2,3,4,5,6,7,8]
for x in choice_without_repetition(lst):
    print x

转载注明原文:python – 如何从列表中选择随机项目,同时避免连续选择相同的项目 - 代码日志