- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
据我所知,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([])
。
关于python - while 循环无条件工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40047062/
我想编写一个 SQL 查询,如果没有分配日期时间,我想替换一个可以选择所有日期和时间的字符串。 实际工作原理: SELECT * FROM `entry` WHERE `user` like
表格如下所示: | colA | colB | colC | colD |some other cols ----------------------------- |double|double| i
我有一个 C# 程序经常失败。没关系,我已经创建了程序,它是我的 child ,无论如何我都喜欢它。作为一种支持,我决定围绕它编写一个 AutoHotKey 包装器,它会自动重新启动程序,直到它没有错
我的一位同事向我展示了计算表中记录的数量,以下 View : CREATE VIEW [SPR].[TablesCount] AS SELECT s.name cSchema,
我是一名优秀的程序员,十分优秀!