Python 在循环遍历很长的列表时检查最后一次迭代
我有一个10000x20大小的矩阵。当循环遍历矩阵的所有10000行时,检查最后一次迭代的最佳方法是什么?我的解决办法是:Python 在循环遍历很长的列表时检查最后一次迭代,python,Python,我有一个10000x20大小的矩阵。当循环遍历矩阵的所有10000行时,检查最后一次迭代的最佳方法是什么?我的解决办法是: height = 10000 ... ... for i in range(height): if i != height - 1: ... ... else: ... ... 当我们处理很长的列表时,这是检查最后一项的好方法吗 循环最后一行以外的所有行,然后在循环后单独处理最后一行 for
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
我假设您在这个范围内迭代,因为出于某种目的需要索引。通常情况下,您希望避免使用Pythonic,但在本例中,这可能是避免处理主循环中最后一行的最简单方法
如果案例之间有共同的代码,即您像处理其他案例一样处理最后一行,但还要对其做一些额外的处理,您可以这样处理:
for row in matrix:
# common processing for all rows here
if height > 0:
# additional code for final row
在这种情况下,您在for
循环中迭代整个列表,因此可以使用for matrix中的行
,而不是迭代整个范围。如果您确实需要索引,那么使用enumerate()
是一种类似python的方法:
如果需要在这两种情况之间复制代码,最好将其分解为一个函数。循环最后一行以外的所有行,然后在循环后单独处理最后一行
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
我假设您在这个范围内迭代,因为出于某种目的需要索引。通常情况下,您希望避免使用Pythonic,但在本例中,这可能是避免处理主循环中最后一行的最简单方法
如果案例之间有共同的代码,即您像处理其他案例一样处理最后一行,但还要对其做一些额外的处理,您可以这样处理:
for row in matrix:
# common processing for all rows here
if height > 0:
# additional code for final row
在这种情况下,您在for
循环中迭代整个列表,因此可以使用for matrix中的行
,而不是迭代整个范围。如果您确实需要索引,那么使用enumerate()
是一种类似python的方法:
如果您需要在这两种情况之间复制代码,可以将其分解为一个函数。为什么您需要知道这是否是最后一次迭代?如果您正在处理一个列表,为什么要使用
range()
,而不仅仅是迭代列表本身呢?对列表名中的项使用:
。。。您迭代项目本身,不需要索引到。如果您确实需要索引,请对idx使用,enumerate(listname)中的项:
,它将一次性为您提供索引和值…@MartijnPieters,因为我需要I作为index@sovel2:然后enumerate()
可以在这方面提供帮助。我们仍然不知道为什么您需要知道这是否是最后一次迭代。你甚至可能不需要知道,也许有更好的方法来解决你的问题。为什么你需要知道这是否是最后一次迭代?如果您正在处理一个列表,为什么要使用range()
,而不仅仅是迭代列表本身呢?对列表名中的项使用:
。。。您迭代项目本身,不需要索引到。如果您确实需要索引,请对idx使用,enumerate(listname)中的项:
,它将一次性为您提供索引和值…@MartijnPieters,因为我需要I作为index@sovel2:然后enumerate()
可以在这方面提供帮助。我们仍然不知道为什么您需要知道这是否是最后一次迭代。你甚至不需要知道,也许有更好的方法来解决你的问题。