简体   繁体   English

生成列表中的随机项目

[英]Generating random item in list

How do I adjust this function so if it is run multiple times it does not return the previous direction? 如何调整此功能,以便如果多次运行该功能不会返回先前的方向? For example, if it generated N , the next time it would not return N . 例如,如果它生成N ,则下次它将不返回N

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

Thanks for your time! 谢谢你的时间!

This question asks to return the random item not print it. 这个问题要求返回随机项目而不打印它。

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)

If you can pass previous direction as in another answer, it's the best. 如果您可以像其他答案一样通过先前的指示,那是最好的。 If you cannot, you can do some hackery (I do not recommend it): 如果不能,则可以进行一些黑客攻击(我推荐这样做):

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

Call the function without any parameters, like random_direct() . 调用没有任何参数的函数,例如random_direct()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM