特定の制約のあるものをランダムに生成する必要があることがよくあります。多くの場合、生成時に制約を無視し、後でそれらが満たされているかどうかを確認し、そうでない場合はプロセスをやり直す方が迅速です。キーワードが欠けてdo
、私は通常書く
r = random_stuff()
while not meets_condition(r):
r = random_stuff()
同じコード行が 2 回あるので、これは少し醜いです。私が本当に欲しいのは、次のような構造です
r = random_stuff() until meets_condition(r)
2.5 で導入された三項演算子に似ています。
a = b if condition else c
ここでの条件は、ステートメントの左側が実行される前に評価されます。while
-constructs 固有の非 Python の醜さを改善する設計パターン (Python 2.7 で動作するはず) の提案はありますか?