اشتمال قائمة (برمجة)
اشتمال قائمة (بالإنجليزية: list comprehension) هو بناء نحوي متوفر في بعض لغات البرمجة لإنشاء قائمة بناءاً على القوائم الموجودة.[1] وهي تتبع الصيغة للتدوين الرياضي في منشئ المجموعة (اشتمال مجموعة) تمييزا لها عن استخدام دوال الخريطة الربطية map و الفلاتر filter.
نظرة عامة
لنضع في الاعتبار المثال التالي في تدوين باني المجموعة.
أو غالبًا
يمكن قراءة هذا، " هي مجموعة كل الأرقام "مرتين " مثل ذلك الـ هو عنصر أو عضو في مجموعة الأعداد الطبيعية ( ) ، و تربيع أكبر من ".
أصغر رقم طبيعي، ، لا يستوفي الشرط (الشرط غير صحيح) لذلك غير مدرج في . الرقم الطبيعي التالي، 2 ، يستوفي الشرط () مثل كل رقم طبيعي آخر. وهكذا يتكون من بما أن المجموعة تتكون من جميع الأرقام " مرتين " ، يتم الحصول عليها من . بعبارة أخرى، S هي مجموعة جميع الأرقام الزوجية الأكبر من 2.
في هذه النسخة المدونة رياضياً من المثال السابق:
- هو المتغير الذي يمثل أعضاء مجموعة الإدخال.
- يمثل مجموعة المدخلات، والتي في هذا المثال هي مجموعة من الأعداد الطبيعية
- هو تعبير أصلي يعمل كمرشح على أعضاء مجموعة الإدخال.
- هو تعبير إخراج ينتج أعضاء المجموعة الجديدة من أعضاء مجموعة الإدخال التي تفي بالتعبير الأصلي.
- تشير الأقواس إلى أن النتيجة هي مجموعة.
- تتم قراءة الشريط العمودي على أنه "مثل هذا". يتم استخدام الشريط والفاصلة ":" بالتبادل.
- تفصل الفواصل بين المسندات predicates ويمكن قراءتها كـ " و ".
يحتوي اشتمال القائمة على نفس الأجزاء النحوية لتمثيل التوليد من قائمة بالترتيب من قائمة الإدخال أو <i>المكرر</i> :
- متغير يمثل أعضاء قائمة المدخلات.
- قائمة الإدخال (أو المكرر).
- تعبير أصلي اختياري.
- وتعبير إخراج ينتج أعضاء قائمة الإخراج من أعضاء المدخلات القابلة للتكرار التي تستوفي المسند .
ترتيب توليد أعضاء قائمة المخرجات يعتمد على ترتيب العناصر في الإدخال.
في التركيب النحوي لاشتمال القائمة في لغة هاسكل، يتم كتابة انشاء باني المجموعة بشكل مشابه، وعلى النحو التالي:
s = [ 2*x | x <- [0..], x^2 > 3 ]
هنا، تمثل القائمة [0..]
، يمثل x^2>3
المسند، ويمثل 2*x
تعبير الإخراج.
نتائج اشتمال القائمة تعطي ترتيبًا محددًا (على عكس أعضاء المجموعات) ؛ وقد يؤدي اشتمال القائمة إلى إنشاء أعضاء قائمة بالترتيب، بدلاً من إنتاج القائمة بالكامل وعلى سبيل المثال؛ يسمح التعريف السابق بلغة هاسكل بأعضاء قائمة لانهائية.
انظر أيضًا
- عبارة SELECT مع عبارات FROM و WHERE في SQL
ملاحظات ومراجع
- "معلومات عن اشتمال قائمة (برمجة) على موقع academic.microsoft.com". academic.microsoft.com. مؤرشف من الأصل في 24 أكتوبر 2020. الوسيط
|CitationClass=
تم تجاهله (مساعدة)
- قائمة الفهم في القاموس المجاني للحوسبة، المحرر دينيس هاو.
- Trinder, Phil (1992). "الفهم، تدوين الاستعلام لـ DBPLs" . وقائع ورشة العمل الدولية الثالثة حول لغات برمجة قواعد البيانات: الأنواع بالجملة والبيانات الثابتة، Nafplion ، اليونان . ص. 55-68.
- Wadler, Philip (1990). "فهم الموناد" . وقائع مؤتمر ACM 1990 حول LISP والبرمجة الوظيفية، نيس .
- Wong, Limsoon (2000). "الشجاعة الوظيفية لنظام الاستعلام كليزلي" . وقائع المؤتمر الدولي الخامس ACM SIGPLAN حول البرمجة الوظيفية . المؤتمر الدولي للبرمجة الوظيفية. ص. 1-10.
هاسكل
- تقرير هاسكل 98 ، الفصل 3.11 قائمة الفهم .
- دليل المستخدم لنظام تجميع غلاسكو هاسكل المجيد، الفصل 7.3.4 فهم القائمة المتوازية .
- دليل مستخدم Hugs 98 ، الفصل 5.1.2 استيعاب القائمة الموازية (ويعرف أيضًا باسم ملفات zip) .
بيثون
- دروس بايثون، قائمة الفهم .
- Python Language Reference ، تعرض القائمة .
- مقترح تحسين Python PEP 202: قائمة الفهم .
- Python Language Reference ، تعبيرات المولد .
- مقترح تحسين Python PEP 289: تعبيرات المولد .
الليسب المشتركة
- تنفيذ Guy Lapalme لماكرو الفهم Lisp
كلوجور
اكسيوم
روابط خارجية
- عمليات مجموعة شبيهة بـ SQL مع قوائم أحادية الفهم في القائمة في Python Cookbook
- مناقشة حول فهم القائمة في مخطط والبنيات ذات الصلة
- اسرد الاستيعاب عبر اللغات
- بوابة علم الحاسوب