在 Python 中连接 2 个列表的运行时间

Runtime of concatenating 2 lists in Python

如果我有 2 个 Python 列表:

a = [1, 2, 3, 4, 5]
b = [6, 7, 8, 9, 10] 

我说:

print(a + b)

我明白了

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Python 在幕后做了什么来创造这个结果?它执行的操作的 Big O 运行时是什么?

p.s。如果之前有人问过这个问题或者在网上其他地方可以找到我找不到它

根据这个Link:

有两种连接方法:您可以使用追加方法或连接运算符(+)

append 方法是“摊销的”O(1)O(1)。在大多数情况下,附加新值所需的内存已经分配,​​严格来说是 O(1)O(1)。一旦列表下的 C 数组用完,就必须扩展它以容纳更多的追加。这个周期性的扩展过程相对于新数组的大小是线性的,这似乎与我们所说的追加是O(1)O(1).

相矛盾

然而,扩展率巧妙地选择为之前数组大小的三倍;当我们将扩展成本分摊到此额外 space 提供的每个额外追加时,每个追加的成本在摊销基础上为 O(1)O(1)

另一方面,串联是 O(k)O(k),其中 kk 是串联列表的大小,因为必须进行 kk 顺序赋值操作。