我有一个清单:
a = [1,2,3,4]
现在我想将列表复制a为列表b
b = list(a)
我想知道制作列表副本的步骤的复杂性a。
我有一个清单:
a = [1,2,3,4]
现在我想将列表复制a为列表b
b = list(a)
我想知道制作列表副本的步骤的复杂性a。
复制列表时:
list.copy()list[:]list()它遍历所有元素。所以时间复杂度由列表的大小定义,即O(n)
当您对可变数据类型执行复制操作时:
b = list(a)
a is b # False
它将整个数据复制到另一个内存位置,时间复杂度由列表的总大小定义,即O(n)
如果您已将其分配如下(别名):
b = a
a is b # True
那么时间复杂度将是O(1)
更多细节看这里
浅复制,切片需要 O(n) 因为 Python 遍历列表中的所有元素并将对象引用的副本添加到新列表(按引用复制)。
浅拷贝
list.copy()
列表切片
list[:]
使用内置列表构造函数 list(...)
list()
使用列表理解
[e for e in lst]