D.B*_*per 1 python while-loop do-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))
Run Code Online (Sandbox Code Playgroud)
甲while循环计算它被给定为一个布尔任何表达式.几乎Python中的所有内容都有一个布尔值.空容器,例如set()通常评估为False,而非空容器,例如具有至少一个元素的集合,评估为True.
while q:因此可以读作"循环q而非空",即"循环,只要q不评估为布尔值False".
另外,您编写的任何类的实例通常都会评估为True.您可以通过__bool__在类中实现返回其他内容的方法来修改它.
还行,q = set()工作正常.没必要q = set([]).
| 归档时间: |
|
| 查看次数: |
2121 次 |
| 最近记录: |