কম্পিউটার টিউটোরিয়াল

পাইথনে শ্যালো এবং ডিপ কপি অপারেশন


পাইথনে 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]]

  1. পাইথনে লিস্ট কপি করার ৪টি কার্যকর পদ্ধতি

  2. C#-এ শ্যালো কপি (Shallow Copy) কী এবং এটি ডিপ কপি (Deep Copy) থেকে কিভাবে ভিন্ন?

  3. জাভাতে ডিপ কপি এবং শ্যালো কপি

  4. Python এবং Tkinter ব্যবহার করে ক্লিপবোর্ড থেকে কপি করা