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

问题描述 投票:2回答:1

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

while path = find_path(residual, source, sink):
    (do whatever)

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

我总能做得很长:

while True:
    path = find_path(residual, source, sink)
    if not path: break

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

python loops syntax
1个回答
5
投票

这需要Python 3.8的assignment expressions

while path := find_path(residual, source, sink):
    (do whatever) 

注意:

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

© www.soinside.com 2019 - 2024. All rights reserved.