我有一个10000x20大小的矩阵。遍历矩阵的所有10000行时,检查上一次迭代的最佳方法是什么?我的解决方案是:
height = 10000
...
...
for i in range(height):
if i != height - 1:
...
...
else:
...
...
当我们处理很长的列表时,这是检查最后一项的好方法吗?
答案 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):
如果您需要在两种情况之间重复代码,将其分解为一个函数可能是合适的。