关于Python,当涉及到for循环时,它是否会在重新迭代前重新评估上限?
假设我有以下情况:
def remove(self,list,element):
for x in range(0,len(list)):
if somecondition:
list.pop(x)
len(list)
这个条件在执行for
循环的下一次迭代之前是否会重新评估?(例如,Objective-C中会这样做)否则,如果弹出了多个元素,则可能会出现越界错误,例如如果删除了1个元素,则最后一次迭代将尝试访问list[len(list)-1]
。我已经试着自己调查了,但每次结果都很混乱。 编辑:我认为我的问题与被标记为重复的问题不同,因为我的问题涉及到继续下一次迭代的循环条件,它很容易添加元素而不是删除元素。
为澄清起见,我的问题是询问
for
循环条件是否会在下一次迭代之前重新检查所提出的条件。
len(some_list)
不会被重新评估。另一方面,如果您循环遍历列表本身并添加元素(for x in some_list:
),则迭代器会变得混乱。在 Python 中通常会避免在迭代过程中修改集合,除非您知道自己在做什么。 - snakecharmerb