قائمة الفهم في بايثون – مع أمثلة

في Python ، تساعدك List comprehensions في إنشاء قوائم جديدة من العناصر التكرارية الحالية ، مثل القوائم ، والسلاسل ، والصفوف.

يتيح لك تركيبها المختصر إنشاء قوائم جديدة في سطر واحد فقط من التعليمات البرمجية. وسيعلمك هذا البرنامج التعليمي كيف يمكنك القيام بذلك.

خلال الدقائق القليلة القادمة ، ستتعلم:

  • كيفية إنشاء قائمة جديدة باستخدام حلقات for ،
  • بناء الجملة لاستخدام list comprehensions في Python و
  • كيفية تعديل list comprehensions باستخدام عبارة if الشرطية.

بالإضافة إلى ذلك ، ستقوم أيضًا بتشفير العديد من الأمثلة التي ستساعدك على فهم قوائم الفهم بشكل أفضل.

دعونا نتعمق

كيفية إنشاء قوائم بايثون باستخدام الحلقات

افترض أن لديك قائمة بأرقام الأرقام. وتريد إنشاء قائمة أخرى تحتوي على مكعب كل الأرقام بالأرقام. إليك كيفية القيام بذلك باستخدام حلقة for في بايثون:

nums = [2,3,5,7]
num_cubes = []
for num in nums:
  num_cubes.append(num**3)

print(num_cubes)

# Output
[8, 27, 125, 343]

في الكود أعلاه ، لدينا الخطوات التالية:

  • تهيئة num_cubes قائمة فارغة.
  • قم بعمل تكرار لقائمة الأعداد.
  • قم بالوصول إلى كل رقم ، واحسب مكعبه باستخدام معامل الأُس: عدد ** 3.
  • أخيرًا ، قم بإلحاق القيمة المكعبة بالقائمة num_cubes

ملاحظة: في بايثون ، يتم استخدام عامل الأُس ** مع بناء الجملة: num ** pow – يتم رفع عدد الأسطوانات إلى أسطر القوة.

ومع ذلك ، يمكنك القيام بذلك بسهولة أكبر باستخدام قائمة الفهم في بايثون. دعنا ننتقل إلى تعلم تركيبها.

قواعد فهم قائمة بايثون

يتم عرض الصيغة العامة لفهم القائمة أدناه.

<new_list> = [<expression> for <item> in <iterable>]

دعونا نحلل بناء الجملة أعلاه.

  • في بايثون ، يتم تحديد القوائم بزوج من الأقواس المربعة []- ومن ثم تحتاج إلى إرفاق بيان فهم القائمة بداخله [].
  • يشير في إلى أنك تقوم بالتكرار خلال ملف متكرر. أي كائن Python يمكنك إجراء حلقة منه والوصول إلى العناصر الفردية – مثل القوائم ، والمجموعات ، والسلاسل هي عناصر متكررة.
  • هو الناتج الذي ترغب في حسابه لكل في .

وهذا يبدو بسيطا ، نعم؟

في جوهر الأمر ، قد ترغب في القيام بشيء ما لجميع العناصر الموجودة في القائمة (أو أي عنصر قابل للتكرار) للحصول على قائمة جديدة.

باستخدام هذا ، يمكننا تبسيط بناء الجملة ، كما هو موضح في الصورة أدناه.

بناء جملة Python List Comprehension (صورة للمؤلف)

الآن بعد أن تعلمت بناء الجملة ، حان الوقت لبدء الترميز. يمكنك استخدام Python IDE عبر الإنترنت من admingate.org لمتابعة هذه الأمثلة. أو يمكنك تشغيلها على جهازك المحلي.

أمثلة لفهم قائمة بايثون

في القسم السابق ، قمت بإنشاء قائمة جديدة num_cubes من الأعداد. لنبدأ بإعادة كتابة ذلك باستخدام قائمة الفهم.

استخدام قائمة الفهم بالأرقام

الآن دعنا نستخدم الصيغة المبسطة على النحو التالي:

  • : هنا ، عليك مكعب كل عدد. لذا استبدل بالرقم ** 3.
  • : المتغير الحلقي هو num – الأرقام الفردية في القائمة.
  • : القائمة الحالية لدينا هي أرقام.
  • و [num**3 for num in nums] هو التعبير النهائي. ✅

بتجميعها معًا ، لدينا مقتطف الشفرة التالي:

num_cubes = [num**3 for num in nums]
print(num_cubes)

# Output
[8, 27, 125, 343]

تهانينا ، لقد قمت بترميز قائمة الفهم الأولى الخاصة بك

للمضي قدمًا ، دعنا نعمل مع سلاسل Python.

استخدام قائمة الفهم بالسلاسل

لنفترض أن لديك قائمة المؤلفين — يمكنك إعادة كتابة القائمة أدناه بالمؤلفين المفضلين لديك.

authors = ["jane austen","george orwell","james clear","cal newport"]

لاحظ كيف أن أسماء المؤلفين مكتوبة بأحرف صغيرة في القائمة أعلاه. نود الآن تنسيقها في حالة العنوان وتخزينها في قائمة جديدة تسمى author_list.

ملاحظة: في Python ، طريقة السلسلة لقب() يقبل سلسلة كوسيطة ، ويعيد نسخة من السلسلة المنسقة في حالة العنوان. بمعنى ، يتم كتابة الحرف الأول من كل كلمة بأحرف كبيرة: First-name Last-name

إذن ، هذا كل ما عليك القيام به:

  • حلقة من خلال قائمة المؤلفين ولكل مؤلف في القائمة ،
  • استدعاء author.title () للحصول على نسخة مغلفة بالعنوان من السلسلة.

ورمز Python لهذا موضح أدناه:

authors = ["jane austen","george orwell","james clear","cal newport"]

author_list = [author.title() for author in authors]
print(author_list)

# Output
['Jane Austen', 'George Orwell', 'James Clear', 'Cal Newport']

في الإخراج أعلاه ، لاحظ كيف تم تنسيق أسماء جميع المؤلفين في حالة العنوان – وهو ما أردناه.

استخدام قائمة الفهم مع قوائم متعددة

لقد تعلمت حتى الآن كيفية استخدام قائمة الفهم لإنشاء قوائم جديدة من قائمة موجودة. الآن دعنا نتعلم كيفية إنشاء قائمة جديدة من قوائم متعددة.

على سبيل المثال ، ضع في اعتبارك هذه المشكلة: لديك قائمتان l_arr و b_arr تحتويان على أطوال وعرض 4 مستطيلات.

وتحتاج إلى إنشاء منطقة قائمة جديدة تتضمن مساحة هذه المستطيلات الأربعة. تذكر ، المساحة = الطول * العرض.

l_arr = [4,5,1,3]
b_arr = [2,1,7,9]

ستحتاج إلى عناصر من كلتا القائمتين (l_arr و b_arr) لحساب المنطقة. ويمكنك القيام بذلك باستخدام وظيفة zip () في Python.

ملاحظة: في Python ، تأخذ الدالة zip () واحدًا أو أكثر من العناصر التكرارية كوسيطات مع بناء الجملة zip (* iterables). ثم تقوم بإرجاع مكرر من tuple ، حيث تحتوي المجموعة i على العنصر i من كل من العناصر التكرارية.

الصورة التالية تصف هذا بالتفصيل. لديك 4 قيم في l_arr و b_arr ، لذا فإن نطاق المؤشرات يتراوح من 0 إلى 3. كما ترى ، تحتوي المجموعة 0 على l_arr[0] و b_arr[0]، يحتوي tuple 1 على l_arr[1] و b_arr[1]، وهلم جرا.

Python zip () الوظيفة (صورة للمؤلف)

لذلك ، يمكنك تنفيذ حلقة من خلال الرمز البريدي (l_arr ، b_arr) كما هو موضح أدناه:

area = [l*b for l,b in zip(l_arr,b_arr)]
print(area)

# Output
[8,5,7,27]

في القسم التالي ، ستتعلم كيفية استخدام العبارات الشرطية داخل قائمة الفهم.

فهم قائمة بايثون مع بناء جملة الشرط

لنبدأ بالبناء على الصيغة السابقة لفهم القائمة.

ها هي البنية:

<new_list> = [<expression> for <item> in <iterable> if <condition>]

بدلاً من حساب لجميع العناصر ، فأنت ترغب فقط في القيام بذلك للعناصر التي تفي بشرط معين – حيث ، الشرط: = صحيح. وهذا يؤدي إلى بناء جملة مبسط كما هو موضح:

فهم قائمة بايثون مع بناء جملة الشرط (صورة للمؤلف)

▶ مع ذلك ، دعنا ننتقل إلى أمثلة التعليمات البرمجية.

فهم قائمة بايثون مع أمثلة شرطية

# 1. لقد أعطيت السلسلة “أنا أتعلم بايثون في عام 2022”. ترغب في الحصول على قائمة بجميع الأرقام في هذه السلسلة. فكيف يمكنك أن تفعل ذلك؟

في Python ، يعمل .isdigit () على حرف ويعيد True إذا كان رقمًا (0-9) ؛ وإلا فإنه يعود خطأ.

يوضح مقتطف الشفرة أدناه كيف يمكنك جمع قائمة بجميع الأرقام في السلسلة str1.

str1 = "I'm learning Python3 in 2022"

digits = [char for char in str1 if char.isdigit()]

print(digits)

# Output
['3', '2', '0', '2', '2']

في الكود أعلاه:

  • تقوم بحلقة عبر السلسلة str1 ،
  • الوصول إلى كل حرف للتحقق مما إذا كان رقمًا باستخدام طريقة isdigit () ، و
  • أضف حرفًا إلى قائمة الأرقام الجديدة فقط إذا كان رقمًا.

لنأخذ مثالاً آخر.

# 2. لديك قائمة بالفواكه. وترغب في إنشاء قائمة تبدأ بـ_ ب تحتوي على جميع الفواكه من قائمة الفواكه التي تبدأ بـ ب. يمكنك استخدام طريقة startswith () لكتابة الشرط.

يقوم .startswith (‘char’) بإرجاع صحيح إذا كان يبدأ بـ ‘char’؛ وإلا فإنه يعود خطأ.

fruits = ['blueberry','apple','banana','orange','cherry']

starts_with_b = [fruit for fruit in fruits if fruit.startswith('b')]

print(starts_with_b)

# Output
['blueberry', 'banana']

في الإخراج أعلاه ، نحصل على “التوت الأزرق” و “الموز” وهما الثمار اللتان تبدأان بالحرف “ب” في قائمة الفواكه ، كما توقعنا.

وهذا يختتم مناقشتنا حول قائمة الفهم.

استنتاج

آمل أن يكون هذا البرنامج التعليمي قد ساعدك في فهم القوائم الشاملة في بايثون.

دعونا نلخص:

  • يمكنك استخدام [<do this> for <all-items> in <this-list>] لإنشاء قائمة جديدة باستخدام قائمة الفهم.
  • بالإضافة إلى ذلك ، يمكنك استخدام بناء الجملة [<do this> for <all-items> in <this-list> if <condition-is-True>] مع العبارة الشرطية if.

بالإضافة إلى ذلك ، قمت أيضًا بترميز العديد من الأمثلة. كخطوة تالية ، يمكنك محاولة إعادة كتابة بعض حلقات Python الحالية لإنشاء قائمة باستخدام فهم القائمة. ترميز سعيد! حتى البرنامج التعليمي التالي

يمكنك الآن إلقاء نظرة على كيفية تحويل قائمة إلى قاموس أو تعلم كيفية التعامل مع الملفات في Python.

  كيفية حظر يوتيوب على آيفون