Python列表pop操作遇IndexError,元素无法追加至新列表求助
问题分析与解决
你的代码存在两个关键问题,导致了报错和不符合预期的行为,咱们一步步拆解:
1. 循环自增的语法错误
Python里没有++n这种自增语法!这个写法实际上等价于+(+n),根本不会改变n的值——n会一直保持为0,所以while(n<7)会变成无限循环:
- 初始
my_list有7个元素,前7次pop()都能正常取出元素,但第8次循环时my_list已经空了,再执行pop()就会触发IndexError: pop from empty list。 - 正确的自增写法应该是
n += 1,这样每次循环n都会加1,循环7次后就会正常终止。
2. append()方法的返回值误区
empty_list.append(k)是原地修改列表的方法,它没有返回值(默认返回None)。你把它赋值给removed_list,得到的自然是None,而不是追加元素后的列表。如果想查看新列表的内容,直接打印empty_list就可以了。
修正后的代码
my_list = [1,2,3,4,5,6,7] empty_list = [] n = 0 while(n < 7): k = my_list.pop() empty_list.append(k) # 不需要赋值,直接原地追加 print(empty_list) # 打印实际的新列表 n += 1 # 正确的自增写法
运行这段代码,你会看到empty_list每次都会追加一个从my_list取出的元素,循环7次后正常结束,不会再报错。
内容的提问来源于stack exchange,提问作者Sunny
相关产品推荐
相关产品推荐

