Dizinin önünü python'da genişletmenin en hızlı yolu nedir? 2 dizim var diyor: a ve b. A = b + a'nın en hızlı yolunu yapmak istiyorum (b değişmemelidir).Hızlı python ön listesi genişletme
Benim küçük benchamarks:
testi 1:
a,b = [],[]
for i in range(0,100000):
a.append(i)
b.append(i)
def f(a,b):
for i in range(0,100):
a=a+b
import cProfile
cProfile.run('f(a,b)')
süresi: ~ 12 s
testi 2:
a,b = [],[]
for i in range(0,100000):
a.append(i)
b.append(i)
def f(a,b):
for i in range(0,100):
a[0:0] = b
import cProfile
cProfile.run('f(a,b)')
süresi: ~ 1.5s
test3:
a,b = [],[]
for i in range(0,100000):
a.append(i)
b.append(i)
lenb = len(b)
def f(a,b):
for i in range(0,100):
b.extend(a)
# do something with b
b = b[:lenb]
import cProfile
cProfile.run('f(a,b)')
süresi: ~ 0,4 saniyeden
Ama listeleri birleştirme birkaç yatan işaretçileri değişiklik olarak yapılmalıdır, çünkü daha hızlı olması gerektiğini düşünüyorum. Ve aşağıdaki kod en hızlı biri, ancak b değiştirir, bir (SO BU, BİR AMAÇ İÇİN İYİ DEĞİL) değil: testi "YANLIŞ":
a,b = [],[]
for i in range(0,100000):
a.append(i)
b.append(i)
def f(a,b):
for i in range(0,100):
b.extend(a)
import cProfile
cProfile.run('f(a,b)')
süresi: ~ Yani 0.13s
teorik olarak, "WRONG" test zamanının önünü uzatmanın bir yolu olmalıdır.
'im koleksiyonlardan port deque' – eumiro
Not, sahip olduklarınız, diziler değil listeler. –