मैंने एक प्रयोग किया जिसमें मैंने एक पायथन सूची खोजने के लिए समय निकालने का प्रयास किया। मेरे पास यादृच्छिक पूर्णांक के साथ arr
सूची है। arr_s
में वही तत्व हैं जो क्रमबद्ध हैं।पायथन में क्रमबद्ध सूची में खोज क्यों अधिक समय लेती है?
arr = np.random.randint(low = 0, high = 1000, size = 500)
arr_s = sorted(arr)
अब मैं पूर्णांकों find
जो तत्व है कि मैं arr
और arr_s
में खोज करना चाहते है के एक यादृच्छिक सरणी पैदा करते हैं।
>>> %%timeit
...:find = np.random.randint(0, 1000, 600)
...:for i in find:
...: if i in arr:
...: continue
[OUT]:100 loops, best of 3: 2.18 ms per loop
>>> %%timeit
...:find = np.random.randint(0, 1000, 600)
...:for i in find:
...: if i in arr_s:
...: continue
[OUT]:100 loops, best of 3: 5.15 ms per loop
अब मैं समझता हूँ कि मैं अनुसार क्रमबद्ध सरणी में खोज करने के लिए कोई विशेष विधि का इस्तेमाल नहीं किया है (उदाहरण के लिए द्विआधारी खोज)। तो यह मानक रैखिक खोज कर रहा है लेकिन सॉर्ट किए गए सरणी में सॉर्ट किए गए सरणी में खोज करने में काफी समय लगता है? मुझे लगता है कि इसे लगभग एक ही समय लेना चाहिए। मैंने find
सरणी के सभी प्रकार की कोशिश की है। Arrays जिसमें (0, 1000), (-1000, -100) और (-10000, 10000) से पूर्णांक होते हैं, लूप हमेशा क्रमबद्ध सरणी के लिए अधिक समय लेते हैं।
आप शायद http://stackoverflow.com/questions/12905513/python-in-keyword- क्षमता –