Ich mache Programmierung Übung von Problemlösung mit Algorithmen und Datenstrukturen.Die Übung ist die Leistung von del-Operator auf Listen und Wörterbücher vergleichen, hier ist der Code:Fehler beim Vergleichen der Leistung von del für dict und Liste in Python
import timeit, random
from timeit import Timer
for i in range(1000000, 100000000, 1000000):
x = list(range(i))
t = Timer("del x[random.randrange(%d)]" %i,\
"from __main__ import random,x")
y = {j: None for j in range(i)}
key = random.choice(list(y.keys()))
t1 = Timer("del y[%d]" %key,\
"from __main__ import y")
time1 = t1.timeit(number=1000)
time = t.timeit(number=1000)
print("%d, %15.5f, %15.5f" % (i, time, time1))
Hier die Fehler:
Traceback (most recent call last):
File "C:\Users\User\AppData\Local\Programs\Python\Python35-32\Problem_Solving\chapter2_del_list_dict.py", line 17, in <module>
time = t.timeit(number=1000)
File "C:\Users\User\AppData\Local\Programs\Python\Python35-32\lib\timeit.py", line 178, in timeit
timing = self.inner(it, self.timer)
File "<timeit-src>", line 6, in inner
IndexError: list assignment index out of range
Und manchmal:
Traceback (most recent call last):
File "C:\Users\User\AppData\Local\Programs\Python\Python35-32\Problem_Solving\chapter2_del_list_dict.py", line 18, in <module>
time1 = t1.timeit(number=1000)
File "C:\Users\User\AppData\Local\Programs\Python\Python35-32\lib\timeit.py", line 178, in timeit
timing = self.inner(it, self.timer)
File "<timeit-src>", line 6, in inner
KeyError: 280015
Danke für jede Hilfe!
Diese Art von Ding ist schwierig, in einer genauen Weise zu prüfen. Eine Möglichkeit besteht darin, die Erstellung der Liste/des Diktats in das getestete Snippet zu verschieben. Dadurch werden die getesteten Timings aufgebläht, aber Sie können dann einen separaten Test nur der Listen-/Diktat-Erstellungszeit durchführen und diesen subtrahieren, um eine Schätzung der Löschungszeit zu erhalten. – BrenBarn