Skip to main content
 首页 » 编程设计

python之while 循环无条件工作

2025年05月04日15txw1958

据我所知,while 语句需要条件才能工作,但在这里它可以在没有任何条件的情况下工作;这怎么可能? while q: 是如何工作的?

代码如下: ...

q = set([]) 
for i in range(N): 
    q.add((i, 0)) 
    q.add((i, M - 1)) 
    w[i][0] = h[i][0] 
    w[i][M - 1] = h[i][M - 1] 
for i in range(M): 
    q.add((0, i)) 
    q.add((N - 1, i)) 
    w[0][i] = h[0][i] 
    w[N - 1][i] = h[N - 1][i] 
 
while q: 
    ci, cj = q.pop() 
    for ii, jj in ((0, 1), (0, -1), (1, 0), (-1, 0)): 
        ni, nj = ci + ii, cj + jj 
        if 0 <= ni < N and 0 <= nj < M: 
            if w[ni][nj] != h[ni][nj] and (w[ni][nj] is None or w[ni][nj] > w[ci][cj]): 
                w[ni][nj] = max(h[ni][nj], w[ci][cj]) 
                q.add((ni, nj)) 

请您参考如下方法:

while 循环计算它作为 bool 值给出的任何表达式。 Python 中几乎所有的东西都有一个 bool 值。空容器,例如 set() 通常评估为 False,而非空容器,例如至少包含一个元素的集合,评估为 True.

while q: 因此可以理解为“当 q 不为空时循环”,即“只要 q 不为空就循环”不计算为 bool 值 False”。

顺便说一句,您编写的任何类的实例通常都会评估为 True。您可以通过在您的类中实现一个返回其他内容的 __bool__ 方法来修改它。

此外,q = set() 工作正常。不需要 q = set([])。