根据 Python 列表的长度更改 for 循环的范围

Changing the range of a for loop based on the length of a list for Python

如果我有一个列表:

list = [1, 2, 3, 4, 5]

还有一个 for 循环:

for i in range(len(list)):
   if list[i] > 3:
      list.clear()
      list.append(1)
print(list)

现在,这些只是说明我遇到的问题的示例,也就是说,我想根据列表的长度遍历列表。如果我满足某个条件,我想修改列表。但是,然后我希望根据新列表的长度将 for 循环 运行 。这样做的主要原因以及我为什么包含 list.clear(),是因为如果列表与定义的列表完全不同,我正在检查的条件也将适用于列表中从以下位置开始的每个元素列表[0].

所以基本上,我希望 for 循环根据给定列表的长度 运行,然后我希望它再次根据新列表的长度 运行,而检查第一个列表和第二个列表的每一次迭代,依此类推,直到我想让它崩溃。

希望我的问题足够清楚。由于我是初学者,因此欢迎提出任何相当简单的建议。如果我做错了什么,也请指出。

谢谢。

为什么不这样写:

i = 0
while True:
    if i < len(list):
       if list[i] > 3:
          list.clear()
          list.append(1)
          i += 1
    else:
       break

print(list)

希望我理解你的意思。

不建议在迭代列表时修改它。

您需要一种从头开始 for 循环的方法,您可以通过将其包装在 while 循环中来实现:

flag = True
while flag:
    for i in range(len(items)):
        if items[i] > 3:
            items.clear()
            items.append(1)
            # break out of the for loop and start over, because flag is still True
            break
        else if final_condition:
            # set flag to false and break out of for loop
            flag = False
            break