当循环遍历一个很长的列表时,请检查最后一次迭代



我有一个大小为10000x20的矩阵。当循环遍历矩阵的所有10000行时,检查最后一次迭代的最佳方法是什么?我的解决方案是:

height = 10000
...
...
for i in range(height):
if i != height - 1:
...
...
else:
...
...

当我们处理很长的列表时,这是检查最后一项的好方法吗?

对除最后一行外的所有行进行循环,然后在循环后单独处理最后一行。

for i in range(height-1):
# handle most rows here
# we must have at least one row; omit if statement if you know height > 0
if height > 0:
# handle last row using an index of -1, or height-1

我假设你在这个范围内迭代,因为你出于某种目的需要索引。通常情况下,您希望避免使用Python,但在这种情况下,这可能是避免处理主循环中最后一行的最简单方法。

如果两种情况之间有共同的代码,即你像其他情况一样处理最后一行,但对它做了一些额外的,你可以这样处理:

for row in matrix:
# common processing for all rows here
if height > 0:
# additional code for final row

在这种情况下,您将在for循环中对整个列表进行迭代,因此可以使用for row in matrix而不是在范围内进行迭代。如果您确实需要索引,Python的方法是使用enumerate():

for i, row in enumerate(matrix):

如果您需要在这两种情况之间复制代码,那么将其分解为一个函数可能是合适的。

最新更新