Python while循环带有单个等号(=)

Ada*_*ith 3 python syntax loops

我正在尝试实现最大流量算法。这是我的代码:

while path = find_path(residual, source, sink):
    (do whatever)
Run Code Online (Sandbox Code Playgroud)

是的,这是while循环中的故意单等于(=)。find_path()如果残差图中仍存在一个函数,但None没有残差,则连接该函数以返回有效路径。在我看来,这应该指定path为任何find_path()收益,然后检查它是否可以进行另一次迭代。但是,相反,我遇到了语法错误。

我总是可以做到这一点很长的路要走:

while True:
    path = find_path(residual, source, sink)
    if not path: break
Run Code Online (Sandbox Code Playgroud)

但这似乎不雅。确实是由于错误的发生频率而使您只允许在Python中将单个等式放入循环中的情况吗?

Car*_*ate 6

这需要Python 3.8的赋值表达式

while path := find_path(residual, source, sink):
    (do whatever) 
Run Code Online (Sandbox Code Playgroud)

注意:

3.8仅在iirc的十月初发布,因此如果要使用它,可能需要更新环境。