पाइथन लिस्ट्स गतिशील रूप से आकार बदलते हैं, लेकिन पूर्व-आवंटन प्रदर्शन को बढ़ावा दे सकता है, खासकर बड़े डेटासेट के साथ। यह लेख सूचियों और अन्य अनुक्रमिक डेटा संरचनाओं के लिए कुशल पूर्व-आवंटन तकनीकों का पता लगाता है।
विषयसूची
- पाइथन सूचियों का पूर्व-आवंटन
- NumPy सरणियों का पूर्व-आवंटन
array.array
के साथ पूर्व-आवंटन- सही डेटा संरचना चुनना
पाइथन सूचियों का पूर्व-आवंटन
जबकि पाइथन कुछ अन्य भाषाओं की तरह सीधे पूर्व-आकार की सूचियों का समर्थन नहीं करता है, हम सूची समझ या *
ऑपरेटर का उपयोग करके उन्हें कुशलतापूर्वक बना सकते हैं।
विधि 1: सूची समझ
एक ही दोहराए जाने वाले मान से भरे विशिष्ट आकार की सूचियाँ बनाने के लिए आदर्श:
size = 10
my_list = [0] * size # 10 शून्यों की सूची
print(my_list) # आउटपुट: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
my_list = [None] * size # 10 None मानों की सूची
print(my_list) # आउटपुट: [None, None, None, None, None, None, None, None, None, None]
विधि 2: जनरेटर के साथ list()
का उपयोग करना
अधिक जटिल इनिशियलाइजेशन के लिए लचीलापन प्रदान करता है जहाँ प्रत्येक तत्व को एक अद्वितीय मान की आवश्यकता होती है:
size = 5
my_list = list(range(size)) # [0, 1, 2, 3, 4] बनाता है
print(my_list)
my_list = list(i**2 for i in range(size)) # [0, 1, 4, 9, 16] बनाता है
print(my_list)
महत्वपूर्ण नोट: पूर्व-आवंटन मुख्य रूप से आकार बदलने को कम करके प्रारंभिक जनसंख्या को अनुकूलित करता है। प्रारंभिक आकार से परे जोड़ना अभी भी गतिशील आकार बदलने को ट्रिगर करता है।
NumPy सरणियों का पूर्व-आवंटन
NumPy सरणियाँ संख्यात्मक गणना और बड़े डेटासेट के साथ उत्कृष्टता प्राप्त करती हैं। वे प्रत्यक्ष आकार और डेटा प्रकार विनिर्देश की अनुमति देते हैं:
import numpy as np
size = 10
my_array = np.zeros(size, dtype=int) # 10 शून्यों (पूर्णांक) की सरणी
print(my_array)
my_array = np.empty(size, dtype=float) # 10 अनइनिशियलाइज़्ड फ्लोट्स की सरणी (सावधानी से उपयोग करें!)
print(my_array)
my_array = np.arange(size) # सरणी [0, 1, 2, ..., 9]
print(my_array)
NumPy विभिन्न प्रारंभिक मानों और डेटा प्रकारों के साथ सरणियाँ बनाने के लिए विभिन्न फ़ंक्शन प्रदान करता है, जिससे संख्यात्मक संचालन दक्षता में काफी वृद्धि होती है।
array.array
के साथ पूर्व-आवंटन
array.array
मॉड्यूल समरूप डेटा के लिए कॉम्पैक्ट संग्रहण प्रदान करता है, जिसके लिए डेटा प्रकार विनिर्देश की आवश्यकता होती है:
import array
size = 5
my_array = array.array('i', [0] * size) # 0 पर इनिशियलाइज़ किए गए 5 पूर्णांकों की सरणी
print(my_array)
'i'
हस्ताक्षरित पूर्णांक प्रकार निर्दिष्ट करता है; अन्य प्रकार कोड के लिए दस्तावेज़ देखें।
सही डेटा संरचना चुनना
सर्वोत्तम विकल्प (सूची, NumPy सरणी, array.array
) आपके अनुप्रयोग और डेटा पर निर्भर करता है। प्रदर्शन लाभ के कारण संख्यात्मक गणना के लिए NumPy सरणियों को आम तौर पर प्राथमिकता दी जाती है। सरल, समरूप डेटा के लिए, array.array
सूचियों की तुलना में अधिक कुशल हो सकता है। मिश्रित डेटा प्रकारों के साथ सामान्य-उद्देश्य उपयोग के लिए पाइथन सूचियाँ उनके गतिशील आकार बदलने के बावजूद बहुमुखी बनी हुई हैं।