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

标签 python design-patterns do-while

我经常不得不随机生成具有特定约束的东西。在许多情况下,忽略生成中的约束更快,然后检查它们是否满足,否则重做该过程。缺少 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 - 构造内在的 unpythonic 丑陋?

最佳答案

while True:
    r = random_stuff()
    if meets_condition(r):
        break

condition = True
while condition:
    r = random_stuff()
    condition = not meets_condition(r)

关于Python:做 r = random_stuff() 而不是 meets_condition(r),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8080072/

相关文章:

python - pyqtgraph中多个图的链接自动缩放

python pandas 将数据帧转换为具有多个值的字典

c# - ASP.NET MVC 项目层

MVC 架构中的 iOS Singleton 类

java - For 循环嵌套在 do... while 不起作用

python - 无法连接到 python iohub

python - 使用python函数在字典中按值获取键并返回键或 "None'

language-agnostic - 我应该如何设计一个允许可选操作的方法?

java - 如何使用 try catch 继续循环?

c - 为什么对单语句主体使用 do {...} while(0) 宏?