生成列表中的随机项

时间:2017-03-03 10:34:57

标签: python

如何调整此功能,如果它多次运行,它不会返回上一个方向?例如,如果它生成N,则下次它不会返回N

import random
def random_direct():
    directions=['N','S','E','W']
    return random.choice(directions)

谢谢你的时间!

这个问题要求返回随机项而不打印它。

2 个答案:

答案 0 :(得分:3)

import random

def random_direct(prev_direction=None):
    directions = [direction for direction in ('N','S','E','W')
                            if direction != prev_direction]
    return random.choice(directions)

答案 1 :(得分:1)

如果您可以像在另一个答案中那样传递上一个方向,那么它是最好的。如果你不能,你可以做一些hackery(我推荐它):

def random_direct(_prev = [None]):
    directions = [direction for direction in ('N', 'S', 'E', 'W')
                            if direction != _prev[0]]
    res = random.choice(directions)
    _prev[0] = res
    return res

在没有任何参数的情况下调用该函数,例如random_direct()