【问题标题】:Pythonic way of doing this?这样做的Pythonic方式?
【发布时间】:2013-06-20 13:35:09
【问题描述】:

我有这个代码结构:

flag = True
while flag:
    do_something()
    if some_condition:
        flag = False

这是最好的方法吗?还是有更好的pythonic方式?

【问题讨论】:

标签: python coding-style pep


【解决方案1】:
while True:
    do_something()
    if some_condition: break

while not some_condition:
    do_something()

要使第二个选项等效于第一个选项,some_condition 必须以 False 开头,因此 do_something() 将至少被调用一次。

【讨论】:

    【解决方案2】:
    def late(cond):
        yield None
        while cond(): yield None
    
    for _ in late(lambda: condition):
        do_something()
    

    看起来很奇怪。这里发生了什么?

    late() 生成器 forst 产生一个值以便无条件地进入循环。并且在每个连续的循环运行中,都会检查cond()

    【讨论】:

      猜你喜欢
      • 2021-12-20
      • 2010-12-08
      • 1970-01-01
      • 1970-01-01
      • 2011-05-04
      • 2018-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多