遍历很长的列表时检查最后一次迭代

时间:2018-11-01 14:03:02

标签: python

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

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

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

1 个答案:

答案 0 :(得分:2)

遍历除最后一行以外的所有内容,然后在循环后分别处理最后一行。

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语言,但是在这种情况下,这可能是避免处理主循环最后一行的最简单方法。

如果这两种情况之间有共同的代码,即您像处理其余情况一样处理最后一行,但还对它进行了 extra 附加操作,则可以这样处理:

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

在这种情况下,您要遍历for循环中的整个列表,因此可以使用for row in matrix而不是遍历整个范围。如果确实需要索引,则可以使用enumerate()的Pythonic方法:

for i, row in enumerate(matrix):

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