2024-04-20 01:14:27 发布
网友
其他人解释说,不应该从正在迭代的数组中删除元素;但是,如果向后遍历数组,就没有问题。在
解决这个问题的最简洁的方法(假设完成后不需要原始数组的副本)是使用reversed()函数,如
reversed()
for square in reversed(squares)
这将从数组的末尾开始迭代,并向后进行。以这种方式取出元素不会影响代码的其余部分,因为您不会更改尚未访问的元素的顺序。我认为这是解决这个问题最优雅的方法。我学会了这个诀窍here
您正在从列表中删除,同时对其进行迭代。这不是个好主意。 还有其他方法可以完成您正在尝试的操作,其中之一是跟踪要从列表中删除的所有项的列表索引,然后将它们从for循环中删除
语句for square in squares只按顺序访问列表中的每一项:squares[0],然后squares[1],然后squares[2],依此类推,直到它用完正方形为止。在
for square in squares
squares[0]
squares[1]
squares[2]
删除squares[0]会将列表中的所有其他项移到左边一个槽;原来的squares[1]现在是squares[0],因此for循环将跳过它。在
其他人解释说,不应该从正在迭代的数组中删除元素;但是,如果向后遍历数组,就没有问题。在
解决这个问题的最简洁的方法(假设完成后不需要原始数组的副本)是使用
reversed()
函数,如for square in reversed(squares)
这将从数组的末尾开始迭代,并向后进行。以这种方式取出元素不会影响代码的其余部分,因为您不会更改尚未访问的元素的顺序。我认为这是解决这个问题最优雅的方法。我学会了这个诀窍here
您正在从列表中删除,同时对其进行迭代。这不是个好主意。
还有其他方法可以完成您正在尝试的操作,其中之一是跟踪要从列表中删除的所有项的列表索引,然后将它们从for循环中删除
语句
for square in squares
只按顺序访问列表中的每一项:squares[0]
,然后squares[1]
,然后squares[2]
,依此类推,直到它用完正方形为止。在删除
squares[0]
会将列表中的所有其他项移到左边一个槽;原来的squares[1]
现在是squares[0]
,因此for循环将跳过它。在相关问题 更多 >
编程相关推荐