贝利信息

Python 列表切片的时间复杂度分析

日期:2026-01-18 00:00 / 作者:冰川箭仙
Python列表切片时间复杂度为O(k)而非O(n),因只复制索引范围内k个元素,不遍历整个原列表;负索引换算、空切片等均为O(1),步长切片仍为O(k);浅拷贝导致可变对象修改影响原列表。

Python 列表切片操作的时间复杂度是 O(k),其中 k 是切片结果的长度(即新列表中元素个数),而不是原列表长度 n

为什么不是 O(n)?

切片会创建一个新列表,并逐个复制选中的元素。它不会遍历整个原列表,只访问索引范围内的元素。例如:

切片不改变原列表,但内存开销不可忽略

切片生成的是浅拷贝:新列表对象独立,但其中的元素引用与原列表相同。这意味着:

常见误区提醒

以下操作看似“轻量”,实则未必:

替代方案:需要“视图”时考虑其他结构

如果只是想遍历某段而不复制数据,切片不是最优解: