हम इसका एक उदहारण देखें
Cities = ['Mumbai', 'Pune', 'Nagpur']
अब इस सूचि की प्रतिलिपि बनाने के लिए एक दुसरे नाम का प्रयोग किया जाए
Cities2 = Cities
इस पद्धति से किसी भी सूचि की प्रतिलिपि निर्मित की जा सकती है. अब हम इन सूचियों के अन्तरंग को देखेंगे.
असल में यहाँ दो लिस्ट्स नहीं हैं. एक ही लिस्ट को दो नाम दिए गए हैं. इसलिए जब हम किसी एक लिस्ट में चेंज करते हैं तब दुसरे नाम से खोलने पर वही लिस्ट हमें दिख जाती है. इसीको शायद शालो कॉपी कहा जाता है
print(Cities)
['Mumbai', 'Pune', 'Nagpur']
print(Cities2)
['Mumbai', 'Pune', 'Nagpur']
अब इसका मनोरंजक भाग आता है. हम किसी भी एक सूचि में कुछ परिवर्तन कर के देखेंगे
Cities2.append('Kolkata')
अब हम Cities2 इस सूचि को प्रकट कर के देखें
print(Cities2)
['Mumbai', 'Pune', 'Nagpur', 'Kolkata']
यहाँ पर हमें ने केवल Cities2 इस सूचि में परिवर्तन किया है. हमने मूल सूचि Cities में कोई चेष्टा पूर्वक कोई परिवर्तन नहीं किया है. अब हम Cities इस मूल सूचि को प्रकट कर के देखें
print(Cities)
['Mumbai', 'Pune', 'Nagpur', 'Kolkata']
इसी प्रकार से हम अब मूल सूचि में कुछ परिवर्तन कर के देखेंगे
Cities.insert(3,'Singapore')
print(Cities)
['Mumbai', 'Pune', 'Nagpur', 'Singapore', 'Kolkata']
अब हम देखें की Cities में परिवर्तन करने के बाद Cities2 इस प्रतिलिपि में क्या कोई परिवर्तन हुआ है ?
print(Cities2)
['Mumbai', 'Pune', 'Nagpur', 'Singapore', 'Kolkata']
निश्चित ही. पायथॉन की सूचियों की प्रतिलिपि = इस चिन्ह के प्रयोग से निर्मित करने पर, दोनों सूचियाँ एक दुसरे के साथ इस तरह जुड़ जाती हैं की एक सूचि में परिवर्तन होने पर वह तत्क्षण दूसरी सूचि में भी अविर्भूत होता है.
Copy with Slice [:] स्लाइस से कॉपी
किन्तु पायथॉन में एक सूचि (लिस्ट) बनाने का यह एकमात्र मार्ग नहीं है. हम Slice स्लाइस [:] इस चिन्ह का प्रयोग कर सकते है. इसे कैसे किया जाता है यह देखेंगे
प्रथमत: हम एक नयी सूचि बनायेंगे
Cities = ['Mumbai','Bangalore','Delhi','Kolkata']
अब मैं सूचि (लिस्ट) की प्रतिलिपि निर्मित करते समय स्लाइस [:] का प्रयोग करूँगा
Cities2 = Cities[:]
अब हम Cities2 को प्रकट कर के देखेंगे
print(Cities2)
['Mumbai', 'Bangalore', 'Delhi', 'Kolkata']
अब हम Cities2 इस सूचि से एक नाम हटा कर देखेंगे
Cities2.remove('Mumbai')
print(Cities2)
['Bangalore', 'Delhi', 'Kolkata']
अब देखें क्या मूल सूचि में कुछ परिवर्तन हुआ है ?
print(Cities)
['Mumbai', 'Bangalore', 'Delhi', 'Kolkata']
नहीं मूल सूचि में कोई परिवर्तन नहीं हुआ है. अब हम मूल सूचि में एक नाम जोड़ कर देखेंगे
Cities.append("Rangoon")
print(Cities)
['Mumbai', 'Bangalore', 'Delhi', 'Kolkata', 'Rangoon']
print(Cities2)
['Bangalore', 'Delhi', 'Kolkata']
जैसा की आप ऊपर देख सकते हैं, स्लाइस (slice) चिन्ह का प्रयोग करने पर सुचियोंकी जो प्रतिलिपि बनती है वह स्वतंत्र होती है और एक सूची में किये गए परिवर्तन का दूसरी सूची पर कोई प्रभाव नहीं पड़ता.
तो इस तरह से दीप कॉपी का इस्तेमाल किसी लिस्ट की, सिंपल लिस्ट, कंपाउंड लिस्ट या नेस्टेड लिस्ट की कॉपी करने के लिए किया जाता है
Learn Python in Hindi - Dictionaries
यहाँ पर हमने स्लाइस मेथड का इस्तेमाल लिस्ट की कॉपी करने के लिए किया. लेकिन स्लाइस के इस्तेमाल से कंपाउंड या नेस्टेड लिस्ट्स इस तरह से कॉपी नहीं किये जाते, इसके लिए डीप कॉपी (deepcopy) ये मेथड इस्तेमाल की जाती है
deepcopy डीप कॉपी
जब हम = इस ऑपरेटर का इस्तेमाल करते हैं तब असल में एक ही लिस्ट को एक और नया नाम दिया जाता है. इसे शालो कॉपी कहा जता है. लेकिन असल में कॉपी होती है वो (deepcopy) मेथड से
from copy import deepcopy
इसके लिए पायथॉन शेल में आपको उपरी सेंटेंस लिखना होगा. अब हम डीप कॉपी के इस्तेमाल से कॉपी बनाकर उसे टेस्ट करेंगे.
cities = ['Mumbai','Pune',['Vadnagar','Surat','Jamnagar'], 'Delhi']
cities2 = deepcopy(cities)
print(cities)
['Mumbai', 'Pune', ['Vadnagar', 'Surat', 'Jamnagar'], 'Delhi']
print(cities2)
['Mumbai', 'Pune', ['Vadnagar', 'Surat', 'Jamnagar'], 'Delhi']
cities2.insert(2,'Gujarat')
print(cities2)
['Mumbai', 'Pune', 'Gujarat', ['Vadnagar', 'Surat', 'Jamnagar'], 'Delhi']
print(cities)
['Mumbai', 'Pune', ['Vadnagar', 'Surat', 'Jamnagar'], 'Delhi']
cities.remove(['Vadnagar', 'Surat', 'Jamnagar'])
print(cities)
['Mumbai', 'Pune', 'Delhi']
print(cities2)
['Mumbai', 'Pune', 'Gujarat', ['Vadnagar', 'Surat', 'Jamnagar'], 'Delhi']
तो इस तरह से दीप कॉपी का इस्तेमाल किसी लिस्ट की, सिंपल लिस्ट, कंपाउंड लिस्ट या नेस्टेड लिस्ट की कॉपी करने के लिए किया जाता है
आगे पढ़िए
Learn Python in Hindi - Dictionaries
कोई टिप्पणी नहीं:
एक टिप्पणी भेजें
टिप्पणी: केवल इस ब्लॉग का सदस्य टिप्पणी भेज सकता है.