我经常不得不随机生成具有某些约束的东西。在许多情况下,忽略生成中的约束会更快,然后检查它们是否满足,否则重做该过程。缺少do
关键字,我通常会写
r = random_stuff()
while not meets_condition(r):
r = random_stuff()
这有点难看,因为我有两次相同的代码行。我真正想要的是一个像
r = random_stuff() until meets_condition(r)
类似于 2.5 中引入的三元运算符:
a = b if condition else c
只是在执行语句的左侧之前评估了这里的条件。有没有人建议一种设计模式(应该在 Python 2.7 中工作)来补救while
-constructs 内在的 unpythonic 丑陋?