Python中x.append(x.pop(0))的工作原理及生效原因解析
为什么
x.append(x.pop(0))能正常工作? 核心原因在于Python的pop()方法有两个关键作用:
- 移除列表指定位置的元素
- 返回被移除的那个元素
当执行x.append(x.pop(0))时,Python的执行流程是这样的:
- 先计算括号内的
x.pop(0):此时列表x是['a', 'b', 'c'],pop(0)会把第一个元素'a'从列表里删掉,列表变成['b', 'c'];同时,这个方法会把刚删掉的'a'作为结果返回出来。 - 接着
append()方法会接收这个返回值'a',把它添加到当前列表的末尾,于是列表就变成了['b', 'c', 'a']。
你觉得“应该无法生效”是误以为append()会去拿执行完pop(0)之后的x[0],但实际上它拿的是pop(0)方法返回的、被移除之前的那个元素值——这也是pop()方法设计的核心用途之一:既能删除元素,又能拿到被删元素的值来后续使用。
另外补充一下:如果要把['a', 'b', 'c']变成['c', 'a', 'b'],只执行一次x.append(x.pop(0))是不够的,需要执行两次:
- 第一次执行后:
['b', 'c', 'a'] - 第二次执行后:
['c', 'a', 'b']
内容的提问来源于stack exchange,提问作者3rdrockdata
相关产品推荐
相关产品推荐

