كيفية استخدام دالة copy() لإنشاء نسخ من القواميس والقوائم في Python
تمت الكتابة بواسطة: عبد الحكيم
تارخ آخر تحديث: 20 سبتمبر 2024محتوى المقال
- ما هي دالة copy()؟
- استخدام copy() مع القواميس
- استخدام copy() مع القوائم
- ماذا عن النسخ العميق (Deep Copy)؟
- متى تستخدم copy() و deepcopy()؟
- الخلاصة
عند العمل مع القوائم (Lists) والقواميس (Dictionaries) في Python، قد تحتاج في بعض الأحيان إلى إنشاء نسخة من هذه الهياكل لتعديلها دون التأثير على النسخة الأصلية. هنا يأتي دور دالة copy()
، التي تسمح لك بإنشاء نسخة سطحية (shallow copy) من القوائم والقواميس. في هذا المقال، سنستعرض كيفية استخدام دالة copy()
مع أمثلة توضيحية.
ما هي دالة copy()
؟
دالة copy()
تُستخدم لإنشاء نسخة سطحية من القواميس أو القوائم. النسخة السطحية تعني أن النسخة تحتوي على نفس العناصر الموجودة في الأصل، لكن التعديلات على النسخة لا تؤثر على الكائن الأصلي. ومع ذلك، إذا كان هناك كائنات قابلة للتغيير (مثل القوائم داخل القواميس أو القوائم)، فإن التغييرات على هذه الكائنات ستؤثر على الأصل والنسخة على حد سواء.
استخدام copy()
مع القواميس
عند استخدام copy()
مع القواميس، يتم إنشاء نسخة جديدة من القاموس الأصلي بحيث يمكن تعديل النسخة دون التأثير على القاموس الأصلي. دعونا نرى مثالًا توضيحيًا:
مثال على استخدام copy()
مع القواميس
original_dict = {'name': 'Ahmed', 'age': 30}
copied_dict = original_dict.copy()
copied_dict['age'] = 35
print('Original Dictionary:', original_dict)
print('Copied Dictionary:', copied_dict)
نتيجة المثال:
عند تنفيذ هذا المثال، ستكون النتيجة كما يلي:
Original Dictionary: {'name': 'Ahmed', 'age': 30}
Copied Dictionary: {'name': 'Ahmed', 'age': 35}
كما ترى، التعديل على القاموس المنسوخ لم يؤثر على القاموس الأصلي.
استخدام copy()
مع القوائم
دالة copy()
تعمل بنفس الطريقة مع القوائم. يمكنك إنشاء نسخة من القائمة، وتعديلها دون التأثير على القائمة الأصلية. لنأخذ مثالًا على ذلك:
مثال على استخدام copy()
مع القوائم
original_list = [1, 2, 3, 4]
copied_list = original_list.copy()
copied_list[0] = 10
print('Original List:', original_list)
print('Copied List:', copied_list)
نتيجة المثال:
عند تنفيذ الكود، ستحصل على النتيجة التالية:
Original List: [1, 2, 3, 4]
Copied List: [10, 2, 3, 4]
هنا أيضًا، التغييرات التي تم إجراؤها على القائمة المنسوخة لم تؤثر على القائمة الأصلية.
ماذا عن النسخ العميق (Deep Copy)؟
كما ذكرنا، copy()
يُنشئ نسخة سطحية (shallow copy). إذا كان لديك قائمة أو قاموس يحتوي على كائنات قابلة للتغيير مثل قوائم أخرى أو قواميس داخلية، فإن النسخة السطحية ستحتوي على مراجع لهذه الكائنات، وأي تغيير في هذه الكائنات سيؤثر على الأصل والنسخة معًا.
لحل هذه المشكلة، يمكنك استخدام دالة deepcopy()
من مكتبة copy
، والتي تقوم بإنشاء نسخة عميقة بحيث تكون جميع الكائنات المستنسخة مستقلة تمامًا عن الأصل.
مثال على النسخ العميق باستخدام deepcopy()
import copy
original_list = [[1, 2], [3, 4]]
deep_copied_list = copy.deepcopy(original_list)
deep_copied_list[0][0] = 10
print('Original List:', original_list)
print('Deep Copied List:', deep_copied_list)
نتيجة المثال:
عند تنفيذ هذا الكود، ستكون النتيجة كما يلي:
Original List: [[1, 2], [3, 4]]
Deep Copied List: [[10, 2], [3, 4]]
في هذا المثال، التغييرات التي تم إجراؤها على النسخة العميقة لم تؤثر على القائمة الأصلية لأن deepcopy()
ينسخ الكائنات الداخلية أيضًا.
متى تستخدم copy()
و deepcopy()
؟
استخدام copy()
مناسب عندما تتعامل مع قوائم أو قواميس تحتوي على عناصر بسيطة (مثل أرقام أو نصوص). ولكن إذا كانت لديك قوائم أو قواميس تحتوي على كائنات قابلة للتغيير (مثل قوائم أو قواميس داخلية)، فيجب استخدام deepcopy()
لضمان عدم تأثر الأصل بالتعديلات التي تُجرى على النسخة.
الخلاصة
دالة copy()
في Python تُعد أداة قوية لإنشاء نسخ سطحية من القواميس والقوائم، وهي مناسبة عند الحاجة إلى إجراء تعديلات على النسخ دون التأثير على الأصل. لكن عند التعامل مع كائنات معقدة تحتوي على مراجع لعناصر أخرى، فإن deepcopy()
يُعد الخيار الأفضل لضمان عدم تأثير التعديلات على النسخة الأصلية.
طور مهاراتك: مقالات يجب قراءتها في البرمجة
- استخدام دالة update() لتحديث محتويات القواميس في Python
- تحويل الأرقام إلى نصوص ثنائية باستخدام دالة bin() في Python
- تحويل الأرقام إلى نصوص سداسية عشرية باستخدام دالة hex() في Python
- كيفية استخدام دالة pow() لحساب القوة والأسس في Python
- فهم دالة len() لحساب طول القوائم والسلاسل النصية في Python
- دالة range() في Python: كيفية توليد تسلسلات الأرقام بسهولة
- التعرف على نوع البيانات باستخدام دالة type() في Python
- تحويل النصوص إلى أرقام صحيحة باستخدام دالة int() في Python
- كيفية تحويل النصوص إلى أرقام عشرية باستخدام دالة float() في Python
- تحويل الأرقام إلى نصوص باستخدام دالة str() في Python