في بايثون، الخاصية الأساسية التي يجب فهمها حول "Tuples" هي أنها غير قابلة للتغيير (Immutable). هذا يعني أنه بمجرد إنشاء tuple، لا يمكنك تعديل محتوياتها مباشرةً بإضافة أو حذف أو تغيير عناصرها.
لكن، هناك طرق للتحايل على هذا القيد إذا كنت بحاجة إلى تحديث ما يشبه tuple:
1. إنشاء Tuple جديد:
الطريقة الأكثر شيوعًا هي إنشاء tuple جديد يحتوي على التغييرات المطلوبة. يمكنك فعل ذلك باستخدام العمليات التالية:
- الدمج (Concatenation): دمج tuple قديم مع tuple جديد يحتوي على العناصر المراد إضافتها.
- التقطيع (Slicing): أخذ أجزاء من tuple قديم ودمجها مع عناصر جديدة لإنشاء tuple جديد.
مثال:
tup1 = (10, 20, 30)tup2 = (40, 50)
# دمج tup1 و tup2 لإنشاء tuple جديدtup3 = tup1 + tup2 print(tup3) # Output: (10, 20, 30, 40, 50)
# تغيير قيمة عنصر باستخدام التقطيع والدمجtup4 = tup1[:1] + (15,) + tup1[2:]print(tup4) # Output: (10, 15, 30)
شرح المثال:
- في المثال الأول، قمنا بدمج
tup1
وtup2
لإنشاءtup3
، وهو tuple جديد يحتوي على جميع عناصر كلا الـ tuples. - في المثال الثاني، أردنا تغيير العنصر الثاني في
tup1
(الذي قيمته 20) ليصبح 15. قمنا بتقطيعtup1
لأخذ الجزء الأول منه ([:1]
الذي يعطي(10,)
)، ثم دمجناه مع tuple جديد يحتوي على القيمة الجديدة(15,)
، ثم دمجنا الناتج مع الجزء المتبقي منtup1
([2:]
الذي يعطي(30,)
). النتيجة هيtup4
، وهو tuple جديد يحتوي على التغيير المطلوب.
2. التحويل إلى List ثم العودة إلى Tuple:
هذه الطريقة تعتمد على تحويل tuple إلى list، حيث أن lists قابلة للتغيير. بعد إجراء التعديلات المطلوبة على الـ list، يتم تحويلها مرة أخرى إلى tuple.
مثال:
tup1 = (10, 20, 30)
# تحويل tuple إلى listlist1 = list(tup1)
# تعديل الـ listlist1[1] = 25
# تحويل الـ list مرة أخرى إلى tupletup2 = tuple(list1)
print(tup2) # Output: (10, 25, 30)
شرح المثال:
- قمنا بتحويل
tup1
إلى list باسمlist1
. - عدّلنا العنصر الثاني في
list1
ليصبح 25. - حوّلنا
list1
مرة أخرى إلى tuple باسمtup2
.
ملاحظات هامة:
اختيار الطريقة المناسبة يعتمد على طبيعة التعديلات التي تريد إجراؤها. إذا كنت تُجري تغييرات بسيطة، فقد يكون الدمج والتقطيع أسرع. أما إذا كنت تُجري تعديلات معقدة، فقد يكون التحويل إلى list أسهل.