为何Python列表的pop()方法会移除两个元素?
Python列表pop()方法的执行差异解析
核心问题:为什么第一段代码中pop()看起来从列表里移除了两个元素,而第二段只移除了一个?
第一段代码及执行分析
代码:
guest = ['aaron', 'john', 'pedro', 'kevin', 'mark', 'brad'] print(guest) guest.pop() print(f"{guest.pop()}") print(guest)
输出:
['aaron', 'john', 'pedro', 'kevin', 'mark', 'brad'] mark ['aaron', 'john', 'pedro', 'kevin']
执行步骤:
- 初始列表有6个元素,第一次
print(guest)输出完整列表。 - 第一次调用
guest.pop():直接移除列表最后一个元素brad,此时列表变为['aaron', 'john', 'pedro', 'kevin', 'mark']。 - 执行
print(f"{guest.pop()}")时,又一次调用了guest.pop():移除当前列表的最后一个元素mark,并将这个元素的值作为打印内容输出,此时列表变为['aaron', 'john', 'pedro', 'kevin']。 - 最后一次
print(guest)输出剩余的4个元素。
这段代码总共调用了两次pop()方法,所以列表会减少两个元素。
第二段代码及执行分析
代码:
guest = ['aaron', 'john', 'pedro', 'kevin', 'mark', 'brad'] print(guest) guest_1 = guest.pop() print(f"{guest_1}") print(guest)
输出:
['aaron', 'john', 'pedro', 'kevin', 'mark', 'brad'] brad ['aaron', 'john', 'pedro', 'kevin', 'mark']
执行步骤:
- 初始列表同样是6个元素,第一次
print(guest)输出完整列表。 - 调用
guest.pop()一次:移除最后一个元素brad,并将返回值赋值给变量guest_1,此时列表变为['aaron', 'john', 'pedro', 'kevin', 'mark']。 print(f"{guest_1}")只是打印变量guest_1存储的值,没有再次调用pop()方法。- 最后
print(guest)输出剩余的5个元素。
这段代码只调用了一次pop()方法,所以列表仅减少一个元素。
关键差异总结
每次调用list.pop()方法,都会直接对列表执行一次“移除最后一个元素”的操作:
- 第一段代码中存在两次
guest.pop()调用,因此触发两次移除。 - 第二段代码仅调用一次
guest.pop(),后续只是打印已存储的返回值,没有新的移除操作。
内容的提问来源于stack exchange,提问作者Bern
相关产品推荐
相关产品推荐

