弹出索引超出范围:For 循环

pop index out of range: For Loop

最终答案

我能够使用 for 循环使其工作: 问题出在 pop(i) 范围内。它只需要是 少一个,因为它从 0 开始。

for i in range(0,len(list_ex1)):
    value=list_ex1.pop((len(list_ex1)-1))
    list_ex2.append(value)

问题

list_ex1 = ['aaa', 'bbb', 'ccc', 111, 222, 333, 'Hello World']
list_ex2 = []

for i in range(len(list_ex1)):
    value = list_ex1.pop(i)
    list_ex2.append(value)

pop index out of range

>>> print(list_ex1)
['bbb', 111, 333]
>>> print(list_ex2)
['aaa', 'ccc', 222, 'Hello World']

我不明白如何使用 for 循环从 list_ex1 中弹出所有值。

旧更新

此代码通过从列表中获取最后一个值来工作。

i = 0
while len(list_ex1) != 0:
    value = list_ex1.pop(len(list_ex1)-1)
    list_ex2.append(value)
    i+=1

您的循环中的迭代器变量将超出范围,因为您正在修改列表的长度,因此它不能用于访问列表。 而不是做:

value = list_ex1.pop(i)

做:

value = list_ex1.pop(0)

这只会弹出前面的项目,一旦前面的项目被弹出,下一个项目就会成为索引 0 处的新项目,对列表的长度执行此操作,列表中的每个项目都将被弹出。