🍰 تقطيع القوائم في بايثون: كيف تستخرج أي جزء تريده بسهولة! ✂️
تخيل أن لديك قائمة طويلة من العناصر، مثل قائمة بأسماء الطلاب أو أسعار المنتجات. ماذا لو أردت الحصول على جزء معين منها فقط، مثل أول 3 عناصر أو العناصر من المركز الثاني إلى الخامس؟ هنا يأتي دور تقطيع القوائم (List Slicing)، وهي أداة سحرية في بايثون تتيح لك فعل ذلك بكل سهولة! 🪄
📌 ما هو تقطيع القوائم (List Slicing)؟
تقطيع القوائم هو عملية استخراج جزء محدد من قائمة موجودة لإنشاء قائمة جديدة، دون تعديل القائمة الأصلية. تشبه عملية تقطيع كعكة 🍰 كبيرة إلى شرائح أصغر. كل شريحة هي جزء من الكعكة الأصلية.
في بايثون، نستخدم الأقواس المربعة [] مع النقطتين : لفعل ذلك. الصيغة الأساسية هي:
القائمة[بداية:نهاية]
# مثال: لدينا قائمة بأسماء أيام الأسبوع
week_days = ["Saturday", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday"]
# نريد استخراج أيام العمل (من الإثنين إلى الخميس)
work_days = week_days[2:6] # تبدأ من الفهرس 2 (Monday) وتنتهي قبل الفهرس 6 (Friday)
print(work_days) # ['Monday', 'Tuesday', 'Wednesday', 'Thursday']
print(week_days) # القائمة الأصلية لم تتغير ['Saturday', 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
🔢 فهم المؤشرات (Index) في التقطيع
المفتاح لفهم التقطيع هو تذكر قاعدة ذهبية واحدة: التقطيع يبدأ من فهرس البداية ويشمل العنصر الموجود عنده، ولكنه يتوقف قبل الوصول إلى فهرس النهاية.
لنتأمل القائمة التالية:
my_list = ['A', 'B', 'C', 'D', 'E', 'F']
# Index: 0 1 2 3 4 5
my_list[1:4]ستعيد['B', 'C', 'D']- البداية: الفهرس
1(العنصر'B') → مُضمن ✅ - النهاية: الفهرس
4(العنصر'E') → غير مُضمن ❌ (التقطيع يتوقف عند الفهرس3)
- البداية: الفهرس
🎯 حالات التقطيع الشائعة مع أمثلة
1. تقطيع من البداية إلى نهاية محددة
احذف فهرس البداية لتبدأ من العنصر الأول (فهرس 0).
colors = ["Red", "Green", "Blue", "Yellow", "Purple"]
first_three = colors[:3] # مثل colors[0:3]
print(first_three) # ['Red', 'Green', 'Blue']
2. تقطيع من مكان محدد إلى النهاية
احذف فهرس النهاية لتنتهي عند آخر عنصر في القائمة.
colors = ["Red", "Green", "Blue", "Yellow", "Purple"]
from_blue = colors[2:] # من الفهرس 2 (Blue) إلى النهاية
print(from_blue) # ['Blue', 'Yellow', 'Purple']
3. تقطيع القائمة كاملة (إنشاء نسخة)
استخدم النقطتين فقط [:] لإنشاء نسخة كاملة جديدة من القائمة.
original = [10, 20, 30]
copy_list = original[:] # نسخة جديدة مستقلة
copy_list[0] = 99
print("Original:", original) # [10, 20, 30]
print("Copy:", copy_list) # [99, 20, 30]
4. استخدام المؤشرات السالبة
المؤشرات السالبة تبدأ العد من نهاية القائمة (-1 هو آخر عنصر).
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# الحصول على آخر 3 عناصر
last_three = numbers[-3:]
print(last_three) # [7, 8, 9]
# استبعاد أول عنصرين وآخر عنصرين
middle = numbers[2:-2]
print(middle) # [2, 3, 4, 5, 6, 7]
🚀 التقطيع بخطوة (Step) - السحر الحقيقي! ✨
يمكننا إضافة معامل ثالث يسمى الخطوة (Step)، والذي يحدد الفجوة بين عناصر القائمة المقطوعة. الصيغة تصبح: القائمة[بداية:نهاية:خطوة]
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# أخذ عنصر، وتخطي الذي يليه (خطوة = 2)
even_indices = numbers[::2]
print(even_indices) # [0, 2, 4, 6, 8]
# البدء من الفهرس 1، ثم أخذ كل عنصر ثاني
odd_indices = numbers[1::2]
print(odd_indices) # [1, 3, 5, 7, 9]
# عكس ترتيب القائمة كاملة باستخدام خطوة سالبة
reversed_list = numbers[::-1]
print(reversed_list) # [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
💡 ملخص سريع وأخطاء شائعة
- الصيغة الكاملة:
list[start:stop:step] - القاعدة:
startمُضمن،stopغير مُضمن. - القيم الافتراضية: إذا حذفت
startتصبح0، إذا حذفتstopتصبح نهاية القائمة، إذا حذفتstepتصبح1. - خطأ شائع:
my_list[2:5]تعيد 3 عناصر (الفهارس 2, 3, 4) وليس 4 عناصر.
🧪 تدريب سريع
جرب بنفسك! ماذا سيكون ناتج الكود التالي؟
letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
result = letters[1:6:2]
print(result)
الحل: ['b', 'd', 'f']
- البداية: الفهرس 1 (
'b') - النهاية: الفهرس 6 (
'g') → غير مُضمن - الخطوة: 2 → نأخذ
'b'، ثم نتخطى'c'ونأخذ'd'، ثم نتخطى'e'ونأخذ'f'، ثم نتوقف قبل'g'.
🎓 اختبر نفسك
التعليقات
شاركنا رأيك أو أسئلتك حول هذا المقال