Python:做r = random_stuff()而不是meet_condition(r)

Man*_*ert 2 python design-patterns do-while

我经常需要随机生成具有某些约束的东西.在许多情况下,忽略生成中的约束更快,检查它们是否在之后得到满足,否则重做该过程.缺少do关键字,我经常写

r = random_stuff()
while not meets_condition(r):
    r = random_stuff()
Run Code Online (Sandbox Code Playgroud)

这有点难看,因为我有两次相同的代码行.我真正想要的是一个类似的结构

r = random_stuff() until meets_condition(r)
Run Code Online (Sandbox Code Playgroud)

类似于2.5中引入的三元运算符:

a = b if condition else c
Run Code Online (Sandbox Code Playgroud)

只是在执行语句的左侧之前评估此条件.有没有人建议设计模式(应该在Python 2.7中工作)来补救 - while构造内在的unpythonic丑陋?

eum*_*iro 8

while True:
    r = random_stuff()
    if meets_condition(r):
        break
Run Code Online (Sandbox Code Playgroud)

要么

condition = True
while condition:
    r = random_stuff()
    condition = not meets_condition(r)
Run Code Online (Sandbox Code Playgroud)