تُعدّ المُعاملات (Tuples) بنية بيانات أساسية في بايثون، وتُقدّم بديلاً قويًا للقوائم عندما تكون الثبات (اللاّتغيّر) مطلوبًا. إنّ فهم خصائصها واستخداماتها أمر بالغ الأهمية للبرمجة الفعّالة والمتينة في بايثون.
مُحتويات الجدول:
- فهم المُعاملات: الثبات والمزايا
- إنشاء المُعاملات: بناء الجملة والأمثلة
- الوصول إلى عناصر المُعاملات: الفهرسة والتقطيع
- طرق المُعاملات:
count()
وindex()
- الدوال المُدمجة للمُعاملات:
len()
،max()
،min()
،sum()
،sorted()
- اختبار العضوية: مُشغّلات
in
وnot in
- التكرار عبر المُعاملات: باستخدام حلقات
for
- المُعاملات مقابل القوائم: اختيار بنية البيانات المناسبة
1. فهم المُعاملات: الثبات والمزايا
على عكس القوائم، التي هي قابلة للتغيير، فإنّ المُعاملات ثابتة (غير قابلة للتغيير). يؤدي هذا الاختلاف الرئيسي إلى العديد من المزايا:
- سلامة البيانات: يمنع الثبات التعديل العَرَضي للبيانات، وهو أمر بالغ الأهمية للأمن والموثوقية.
- سلامة الخيوط: يمكن للعديد من الخيوط الوصول إلى مُعامل واحد بشكل مُتزامن دون خطر تلف البيانات.
- الأداء: في بعض الحالات، قد تكون المُعاملات أسرع قليلاً من القوائم نظرًا لإدارة الذاكرة المُحسّنة.
- الاستخدام كمفاتيح في القواميس: يمكن استخدام المُعاملات، على عكس القوائم، كمفاتيح في القواميس، مما يُمكّن من تنظيم البيانات بكفاءة.
2. إنشاء المُعاملات: بناء الجملة والأمثلة
إنشاء المُعاملات بسيط. قم بإحاطة العناصر بين قوسين ()
، مفصولة بفاصلات:
# مُعامل فارغ
empty_tuple = ()
# مُعامل به عناصر
my_tuple = (1, 2, 3, "apple", "banana")
my_tuple2 = 1, 2, 3 # الأقواس اختيارية للمعاملات البسيطة
print(empty_tuple) # الإخراج: ()
print(my_tuple) # الإخراج: (1, 2, 3, 'apple', 'banana')
print(my_tuple2) # الإخراج: (1, 2, 3)
3. الوصول إلى عناصر المُعاملات: الفهرسة والتقطيع
الوصول إلى العناصر باستخدام الفهرسة، مشابه للقوائم:
my_tuple = (10, 20, 30, 40, 50)
print(my_tuple[0]) # الإخراج: 10 (العنصر الأول)
print(my_tuple[2]) # الإخراج: 30 (العنصر الثالث)
print(my_tuple[-1]) # الإخراج: 50 (العنصر الأخير)
print(my_tuple[1:4]) # الإخراج: (20, 30, 40) (التقطيع)
4. طرق المُعاملات: count()
و index()
للمُعاملات طرق محدودة بسبب الثبات:
count(x)
: يُحسب عدد مرات ظهورx
.index(x)
: يُعيد فهرس أول ظهور لـx
. يُثيرValueError
إذا لم يتم العثور علىx
.
my_tuple = (1, 2, 2, 3, 4, 2)
print(my_tuple.count(2)) # الإخراج: 3
print(my_tuple.index(3)) # الإخراج: 3
5. الدوال المُدمجة للمُعاملات
تُناسب العديد من الدوال المُدمجة المُعاملات:
len(tuple)
: يُعيد الطول.max(tuple)
: يُعيد أكبر عنصر.min(tuple)
: يُعيد أصغر عنصر.sum(tuple)
: يُعيد مجموع العناصر العددية.sorted(tuple)
: يُعيد قائمة مُرتّبة جديدة (يبقى المُعامل دون تغيير).
my_tuple = (1, 5, 2, 8, 3)
print(len(my_tuple)) # الإخراج: 5
print(max(my_tuple)) # الإخراج: 8
print(min(my_tuple)) # الإخراج: 1
print(sum(my_tuple)) # الإخراج: 19
print(sorted(my_tuple)) # الإخراج: [1, 2, 3, 5, 8]
6. اختبار العضوية: مُشغّلات in
و not in
التحقق من وجود العنصر:
my_tuple = (1, 2, 3, 4, 5)
print(3 in my_tuple) # الإخراج: True
print(6 not in my_tuple) # الإخراج: True
7. التكرار عبر المُعاملات: باستخدام حلقات for
التكرار باستخدام حلقة for
:
my_tuple = ("apple", "banana", "cherry")
for fruit in my_tuple:
print(fruit)
8. المُعاملات مقابل القوائم: اختيار بنية البيانات المناسبة
اختر المُعاملات عندما يكون الثبات مطلوبًا (مثل: تمثيل الإحداثيات، سجلات قاعدة البيانات). استخدم القوائم عندما يكون التغيير مطلوبًا (مثل: المجموعات التي تحتاج إلى تعديل).