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