पाइथन में सरणी के सामने विस्तार करने का सबसे तेज़ तरीका क्या है? आइए कहें कि मेरे पास 2 एरे हैं: ए और बी। मैं एक = बी + ए (बी नहीं बदलना चाहिए) का सबसे तेज़ तरीका बनाना चाहता हूं।फास्ट पायथन फ्रंट सूची
मेरे छोटे benchamarks:
परीक्षण 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)')
समय: ~ 12 रों
परीक्षण 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)')
समय: ~ 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)')
समय: ~ 0.4s
लेकिन मुझे लगता है कि यह तेजी से होना चाहिए क्योंकि सूचियों संयोजन कुछ अंतर्निहित संकेत के परिवर्तन के रूप में किया जाना चाहिए। और निम्नलिखित कोड सबसे तेजी से एक है, लेकिन ख बदल जाता है, नहीं एक (अतः यह अच्छा नहीं हमारे उद्देश्य के लिए है): परीक्षण "गलत":
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)')
समय: ~ 0.13s
तो सैद्धांतिक रूप से परीक्षण "WRONG" के समय के सामने विस्तार करने का एक तरीका होना चाहिए।
'im संग्रह से पोर्ट डेक ' – eumiro
नोट, आपके पास सूचियां हैं, सरणी नहीं। –