弹出索引超出范围: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 处的新项目,对列表的长度执行此操作,列表中的每个项目都将被弹出。
最终答案
我能够使用 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 处的新项目,对列表的长度执行此操作,列表中的每个项目都将被弹出。