我有一個(gè)清單:a = [1,2,3,4]現(xiàn)在我想將列表復(fù)制a為列表bb = list(a)我想知道復(fù)制列表的步驟的復(fù)雜性a。
3 回答

千巷貓影
TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊
復(fù)制列表時(shí):
list.copy()
list[:]
list()
它遍歷所有元素。所以時(shí)間復(fù)雜度由列表的大小定義,即O(n)

慕桂英546537
TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超10個(gè)贊
當(dāng)您對可變數(shù)據(jù)類型執(zhí)行復(fù)制操作時(shí):
b = list(a)
a is b # False
它將整個(gè)數(shù)據(jù)復(fù)制到另一個(gè)內(nèi)存位置,時(shí)間復(fù)雜度由列表的總大小定義,即O(n)
如果您已將其分配如下(別名):
b = a
a is b # True
那么時(shí)間復(fù)雜度就是O(1)

皈依舞
TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超3個(gè)贊
淺復(fù)制、切片需要 O(n) 因?yàn)?Python 會遍歷列表中的所有元素并將對象引用的副本添加到新列表(按引用復(fù)制)。
淺復(fù)制
list.copy()
列表切片
list[:]
使用內(nèi)置列表構(gòu)造函數(shù) list(...)
list()
使用列表理解
[e for e in lst]
添加回答
舉報(bào)
0/150
提交
取消