Python中pop()与pop(-1)的区别:时间复杂度是否一致?
列表
pop()与pop(-1)的时间复杂度解析 - 核心结论:
list.pop()(无参默认弹出尾元素)和list.pop(-1)的时间复杂度完全一致,均为O(1)。 pop(-1)不需要遍历整个列表。
底层逻辑说明
Python的列表基于动态数组实现,数组在内存中是连续存储的结构:
- 尾元素的内存地址可以通过数组起始地址+长度偏移直接定位,无需遍历。
pop()的默认参数就是-1,二者在源码层面执行完全相同的逻辑:直接定位尾元素,移除后调整数组长度标记,全程无遍历操作,因此是常数级时间复杂度。
与之对比,若调用pop(i)且i不是尾索引(比如pop(0)),则需要将i之后的所有元素向前移动一位填补空缺,此时时间复杂度为O(n),但pop(-1)和默认pop()不存在这类操作。
内容的提问来源于stack exchange,提问作者pmadik
相关产品推荐
相关产品推荐

