## المرور والتصفية المتقدمة
Python تقدم أدوات قوية للمرور على المجموعات وتصفيتها.
### الدوال المدمجة:
**1. enumerate():** المرور مع الفهرس ```python for i, val in enumerate(lst): print(i, val) ```
**2. zip():** المرور على قائمتين معاً ```python for a, b in zip(lst1, lst2): print(a, b) ```
**3. map():** تطبيق دالة على كل عنصر ```python result = list(map(func, lst)) ```
**4. filter():** تصفية العناصر ```python result = list(filter(func, lst)) ```
**5. sorted() مع key:** ```python sorted(lst, key=lambda x: x['name']) ```
| 1 | students = [ |
| 2 | {"name": "أحمد", "grade": 85}, |
| 3 | {"name": "سارة", "grade": 92}, |
| 4 | {"name": "محمد", "grade": 78}, |
| 5 | ] |
| 6 | |
| 7 | # ترتيب حسب الدرجة |
| 8 | ranked = sorted(students, key=lambda s: s["grade"], reverse=True) |
| 9 | for i, s in enumerate(ranked, 1): |
| 10 | print(f"{i}. {s['name']} - {s['grade']}") |
مثال 1: enumerate و zip
| 1 | names = ["أحمد", "سارة", "علي"] |
| 2 | scores = [85, 92, 78] |
| 3 | |
| 4 | print("النتائج:") |
| 5 | for i, (name, score) in enumerate(zip(names, scores), 1): |
| 6 | status = "✅ ناجح" if score >= 60 else "❌ راسب" |
| 7 | print(f"{i}. {name}: {score} {status}") |
مثال 2: map و filter
| 1 | numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] |
| 2 | |
| 3 | # filter: الأرقام الزوجية |
| 4 | evens = list(filter(lambda x: x % 2 == 0, numbers)) |
| 5 | print("الزوجية:", evens) |
| 6 | |
| 7 | # map: مربع كل رقم |
| 8 | squares = list(map(lambda x: x**2, numbers)) |
| 9 | print("المربعات:", squares) |
| 10 | |
| 11 | # البديل بـ List Comprehension (أوضح) |
| 12 | evens2 = [x for x in numbers if x % 2 == 0] |
| 13 | squares2 = [x**2 for x in numbers] |