Bin sayıların bir listesini oluşturmak için aşağıdaki yöntemleri göz önünde bulundurun.Listeleme için ekleme ve birleştirme karmaşıklığı
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)
Çıktı:
[0.30474191033602543, 0.3783786557587963]
[0.015134341605235302, 0.023081246200096328]
Neden birleştirme daha yaklaşık 20 kat daha iyi ekleme yöntemidir. AFAIK eki, O (1) karmaşıklığına sahipken, birleştirme, O (k) karmaşıklığına sahiptir. Burada K 1 iken, gözden kaçan belli bir şey var mı?
[0.047872320772834216, ,04017255103519537]':
Bu üretir:
+=
aynı referansa yeniden atama ilelist.extend()
aynı şey birleştirme, arttırılmış kullanır ek olarak yaklaşık 2 kat. – garg10may@ garg10may: hayır, öyle değil. Zamanlamalarımı gör. –
@ garg10may: ve O (1) bir * sınıf * performanstır, kesin bir ölçüm değildir; Farklı O (1) algoritmalar arasındaki sabit süre hala değişebilir. –