如果我有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执行的操作是什么?
ps如果此问题已被询问过,或者可以在其他在线地方找到,则无法找到
根据此链接:
有两种连接方法:您可以使用append方法或连接运算符(+)
。
append方法为“摊销” O(1)O(1)
。在大多数情况下,追加新值所需的内存已经分配完毕,严格来说是O(1)O(1)
。一旦列表下面的C数组用尽,就必须对其进行扩展以适应更多的追加。这种周期性扩展过程相对于新数组的大小是线性的,这似乎与我们关于附加为的说法相矛盾O(1)O(1)
。
但是,明智地选择扩展速率为阵列先前大小的三倍;当我们将扩展成本分摊到此额外空间所提供的每个附加附件上时,每个附件的费用将以O(1)O(1)
摊销为基础。
另一方面,级联为O(k)O(k)
,其中kk
级联列表的大小是,因为kk
必须进行顺序分配操作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句