قد تعتقد أن فهم القائمة هو مفهوم متقدم. ومع ذلك، يمكنه تبسيط التعليمات البرمجية الخاصة بك باستخدام سطر واحد فقط في المواقف الصعبة. حان الوقت لفهم كيف يعمل. سأشرح ذلك على مستوى المبتدئين مع أمثلة.
غالبًا ما ترى الترميز l2 = [x 1 لـ x في l]. ويقال أنه مثل هذا:
l2 = [] for x in l: x = x 1 l2.append(x)
في كلتا الحالتين، إذا بدأنا بـ l = [10، 100، 1000]، فإن l2 سيكون:
[11, 101, 1001]
بناء الجملة الأول هو ما نسميه فهم القائمة.
قد تفضل حلقة for المعتادة، ولكن بحلول نهاية هذه المقالة، أعدك أنك ستكون واثقًا من استخدام فهم القائمة!
بالإضافة إلى ذلك، دعونا نتحقق من التعريف الرسمي التفصيلي من الوثائق https://docs.python.org/3/tutorial/datastructures.html#list-comprehensions
توفر عمليات فهم القائمة طريقة موجزة لإنشاء القوائم. التطبيقات الشائعة هي إنشاء قوائم جديدة حيث يكون كل عنصر نتيجة لبعض العمليات المطبقة على كل عضو في تسلسل آخر أو قابل للتكرار، أو إنشاء سلسلة لاحقة من تلك العناصر التي تستوفي شرطًا معينًا.
دعونا نقسمها أكثر. إن فهم القائمة هو مجرد طريقة مختلفة لكتابة تعليمات برمجية أقصر وأسهل لإنشاء قائمة جديدة. نتيجة فهم القائمة هي قائمة، ولهذا السبب قمنا بتعيينها إلى قائمة.
دعنا نتناول الجزء الثاني من التعريف، الذي يناقش الأمثلة الشائعة. وينبغي أن يتم ذلك باستخدام أمثلة محددة.
1.
fast_foods = ["Burger", "Pizza", "Tacos", "Fried Chicken", "Hot Dog"] uppercase_fast_foods = [food.upper() for food in fast_foods]
بعد ذلك، ستصبح الأحرف الكبيرة_الأطعمة السريعة:
['BURGER', 'PIZZA', 'TACOS', 'FRIED CHICKEN', 'HOT DOG']
نستخدم الدالة Upper() لتغيير كل عنصر غذائي في قائمتنا إلى أحرف كبيرة. ونتيجة لذلك، أصبحت كافة العناصر الآن بالأحرف الكبيرة. هذه هي الطريقة التي نقوم بها "بإنشاء قوائم جديدة حيث يكون كل عنصر نتيجة لبعض العمليات المطبقة على كل عضو في تسلسل آخر أو قابل للتكرار."
2.
fast_foods = ["Burger", "Pizza", "Tacos", "Fried Chicken", "Hot Dog"] foods_with_space = [food for food in fast_foods if " " in food]
بعد ذلك، Foods_with_space سيكون:
['Fried Chicken', 'Hot Dog']
يسترد سطر التعليمات البرمجية أعلاه العناصر من القائمة التي تحتوي على مسافة بيضاء. هذه هي الطريقة التي نقوم بها "بإنشاء قوائم جديدة حيث يكون كل عنصر نتيجة لبعض العمليات المطبقة على كل عضو في تسلسل آخر أو قابل للتكرار."
لقد استخدمت فهم القائمة في العديد من المشكلات لأنه كلما واجهت عددًا كبيرًا جدًا من حلقات for-loop، فكرت، "لا توجد مشكلة، سأقوم فقط بتبسيطها". وتبين أن هذا هو نفس المنطق، ولكنه أكثر نظافة! ?
دون مزيد من اللغط، فيما يلي بعض الأمثلة الأكثر صلة التي توصلت إليها:
1. تعديل كل عنصر من عناصر القائمة
foods = ["Burger", "Fries", "Fried Chicken", "Hot Dog", "Pizza"] foods_with_version = [food ' - 2024' for food in foods] print(foods_with_version)
الإخراج:
['Burger - 2024', 'Fries - 2024', 'Fried Chicken - 2024', 'Hot Dog - 2024', 'Pizza - 2024']
في هذا المثال، نأخذ قائمة من العناصر الغذائية ونضيف "- 2024" إلى كل منها. نحن نستخدم فهم القائمة لإنشاء قائمة جديدة بسرعة بهذه الأسماء المحدثة.
2. إنشاء قائمة فرعية من قائمة بناءً على شرط
foods = ["Burger", "Fried Chicken", "Hot Dog", "Fries", "Pizza"] long_foods = [food for food in foods if len(food) > 7] print(long_foods)
الإخراج:
['Fried Chicken']`
في هذا المثال، قمنا بإنشاء قائمة بالعناصر الغذائية وتصفية العناصر التي تحتوي على أكثر من 7 أحرف. نستخدم فهم القائمة مع الشرط لتحقيق ذلك.
3. استخدم وظيفة النطاق مع فهم القائمة لإنشاء قائمة
x = [i for i in range(10, 20, 2)] print(x)
الإخراج:
[10, 12, 14, 16, 18]
في هذا المثال، قمنا بإنشاء قائمة من الأرقام تتراوح من 10 إلى 18 باستخدام فهم القائمة مع النطاق ().
4. تطبيق فهم القائمة على سلسلة
input_string = "hello world" marked_vowels = ['*' if char in 'aeiouAEIOU' else char for char in input_string] print(marked_vowels)
الإخراج:
['h', '*', 'l', 'l', '*', ' ', 'w', 'o', 'r', 'l', 'd']
في هذا المثال الأخير، نأخذ سلسلة نصية ونضع علامة على حروف العلة الخاصة بها بعلامة النجمة (*). نحن نستخدم فهم القائمة لإنشاء قائمة جديدة بناءً على السلسلة الأصلية.
طوال هذه المقالة، قمت بتغطية جميع الأفكار الأساسية حول فهم القائمة، بدءًا من التعريف وحتى الأمثلة المختلفة التي تشرحها بشكل أكبر. أتمنى أن يكون كل شيء واضحًا، وأن تشعر بمزيد من التحفيز لدمج فهم القائمة في كود بايثون الخاص بك من الآن فصاعدًا!
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3