पायथन में copy नामक एक मॉड्यूल है। इस मॉड्यूल का उपयोग करके, हम डीप कॉपी और शैलो कॉपी कर सकते हैं। पायथन में असाइनमेंट स्टेटमेंट्स ऑब्जेक्ट्स को कॉपी नहीं करते हैं। वे टारगेट और मुख्य ऑब्जेक्ट के बीच एक बाइंडिंग बनाते हैं।
इस मॉड्यूल का उपयोग करने के लिए, हमें इसे आयात करना चाहिए।
import copy
मेथड copy.copy(x)
यह मेथड ऑब्जेक्ट x की एक शैलो कॉपी बनाने के लिए उपयोग किया जाता है। शैलो कॉपी के लिए, एक ऑब्जेक्ट का रेफरेंस दूसरे ऑब्जेक्ट में कॉपी किया जाता है। इसलिए यदि कॉपी किए गए रेफरेंस पर कोई परिवर्तन होता है, तो यह मुख्य ऑब्जेक्ट की सामग्री को बदल देगा।
मेथड copy.deepcopy(x)
यह मेथड ऑब्जेक्ट x की एक डीप कॉपी बनाने के लिए उपयोग किया जाता है। डीप कॉपी के लिए, मुख्य ऑब्जेक्ट से डेटा लेकर एक व्यक्तिगत ऑब्जेक्ट बनाया जाता है। इसलिए यदि कॉपी किए गए रेफरेंस पर कोई परिवर्तन होता है, तो मुख्य ऑब्जेक्ट वही रहेगा।
उदाहरण कोड
import copy
my_mat = [[11,22,33],[44,55,66],[11,22,33]]
print('Matrix Before Updation: ' + str(my_mat))
new_mat = copy.copy(my_mat) # शैलो कॉपी बनाएं और कॉपी किए गए ऑब्जेक्ट पर अपडेट करें
new_mat[2][0] = 77
new_mat[2][1] = 88
new_mat[2][2] = 99
print('Matrix After Updation: ' + str(my_mat)) # मूल मैट्रिक्स अपडेट हो गया
my_mat = [[11,22,33],[44,55,66],[11,22,33]]
new_mat_deep = copy.deepcopy(new_mat)
print('\nMatrix Before Updation: ' + str(my_mat))
new_mat_deep[2][0] = 77
new_mat_deep[2][1] = 88
new_mat_deep[2][2] = 99
print('Matrix After Updation: ' + str(my_mat)) # मूल मैट्रिक्स अपरिवर्तित
print('New Matrix: ' + str(new_mat_deep)) # मूल मैट्रिक्स अपरिवर्तित
आउटपुट
Matrix Before Updation: [[11, 22, 33], [44, 55, 66], [11, 22, 33]] Matrix After Updation: [[11, 22, 33], [44, 55, 66], [77, 88, 99]] Matrix Before Updation: [[11, 22, 33], [44, 55, 66], [11, 22, 33]] Matrix After Updation: [[11, 22, 33], [44, 55, 66], [11, 22, 33]] New Matrix: [[11, 22, 33], [44, 55, 66], [77, 88, 99]]