Betrachten Sie unten Methoden zur Bildung einer Liste von tausend Zahlen.Unterschied in der Komplexität von append und verketten für Listen
def test1():
l = []
for i in range(1000):
l = l + [i]
return l
def test2():
l = []
for i in range(1000):
l.append(i)
print timeit.repeat(stmt=test1, number=100,repeat=2)
print timeit.repeat(stmt=test2, number=100,repeat=2)
Ausgang:
[0.30474191033602543, 0.3783786557587963]
[0.015134341605235302, 0.023081246200096328]
Warum ist die Methode append etwa 20 mal besser als die Verkettung. AFAIK append hat O (1) -Komplexität, während Verkettung O (k) -Komplexität hat. Während K hier ist 1.
Gibt es einige offensichtliche Dinge, die ich übersehen habe?
noch ist es unter '[,047872320772834216, ,04017255103519537]' etwa 2 mal als append. – garg10may
@ garg10may: Nein, ist es nicht. Sieh dir meine Zeit an. –
@ garg10may: und O (1) ist eine * Klasse * der Leistung, keine genaue Messung; die konstante Zeit zwischen verschiedenen O (1) Algorithmen kann immer noch variieren. –