Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在循环遍历很长的列表时检查最后一次迭代_Python - Fatal编程技术网

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

Python 在循环遍历很长的列表时检查最后一次迭代,python,Python,我有一个10000x20大小的矩阵。当循环遍历矩阵的所有10000行时,检查最后一次迭代的最佳方法是什么?我的解决办法是: height = 10000 ... ... for i in range(height): if i != height - 1: ... ... else: ... ... 当我们处理很长的列表时,这是检查最后一项的好方法吗 循环最后一行以外的所有行,然后在循环后单独处理最后一行 for

我有一个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
我假设您在这个范围内迭代,因为出于某种目的需要索引。通常情况下,您希望避免使用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()
可以在这方面提供帮助。我们仍然不知道为什么您需要知道这是否是最后一次迭代。你甚至不需要知道,也许有更好的方法来解决你的问题。