استيعاب القوائم

9.5 استيعاب القوائم

أهداف التعلم

في نهاية هذا القسم، ينبغي أن تكون قادرًا على

  • تحديد المكونات المختلفة لتعليمة استيعاب القوائم.
  • تنفيذ التصفية باستخدام استيعاب القوائم.

استيعاب القوائم

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

يظهر الشكل العام لتعليمة استيعاب القوائم فيما يلي.

list_name = [expression for loop_variable in iterable]

list_name يشير إلى اسم قائمة جديدة، يمكن أن يكون أي شيء، و for هي الكلمة المحجوزة لحلقة for. يحدد التعبيرُ العناصرَ التي ستُضاف إلى القائمة الجديدة. loop_variable هو مُتغيِّر الحلقة، و iterable هو كائن قابل للتكرار، مثل قائمة أو سلسلة نصية.

مثال 9.5

إنشاء قائمة جديدة باستخدام استيعاب القوائم

استيعاب القوائم الموضح أدناه في الشِفرة الثانية له نفس تأثير حلقة for العادية الموضحة في الشِفرة الأولى. القائمة الناتجة هي [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] في كلتا الحالتين.

إنشاء قائمة من المربعات باستخدام حلقة for.

    # إنشاء قائمة فارغة.
    squares_list = []

    # إضافة عناصر إلى قائمة كمربعات أعداد تبدأ من 0 وتنتهي عند 9.
    for i in range(10):
      squares_list.append(i*i)

إنشاء قائمة من المربعات باستخدام استيعاب القوائم.

    square_list = [i*i for i in range(10)]

يُطبَّق التعبيرُ i*i على كل قيمة يأخذها مُتغيِّر الحلقة i.

مثال 9.6

قصيدة للدكتور سوس

يمكن استخدام استيعاب القوائم لإنشاء قائمة بناءً على قائمة أخرى. في السطر 6، تمرّ حلقة for على عناصر القائمة poem_lines.

1
# إنشاء قائمة كلمات
2
words_list = ["one", "two", "red", "blue"]
3
4
# استخدام استيعاب القوائم لإنشاء قائمة جديدة باسم poem_lines
5
# إلحاق كلمة "fish" بكل كلمة في words_list
6
poem_lines = [w + " fish" for w in words_list]
7
for line in poem_lines:
8
  print(line)

مخرجات الشِفرة أعلاه:

    one fish
    two fish
    red fish
    blue fish

مفاهيم تطبيقية

استيعاب القوائم

1.
المكون في استيعاب القوائم الذي يحدد عنصرًا في القائمة الجديدة هو _____.
  1. التعبير
  2. مُتغيِّر الحلقة
  3. الحاوية
2.
ما محتوى b_list بعد تنفيذ الشِفرة أدناه؟
a_list = [1, 2, 3, 4, 5]
b_list = [i+2 for i in a_list]
  1. [1, 2, 3, 4, 5]
  2. [0, 1, 2, 3, 4]
  3. [3, 4, 5, 6, 7]
3.
ما محتوى new_list بعد تنفيذ التعليمة أدناه؟
new_list = [i//3 for i in range(1, 15, 3)]
  1. [0.3333333333333333, 1.3333333333333333, 2.3333333333333335, 3.3333333333333335, 4.333333333333333]
  2. [0, 1, 2, 3, 4]
  3. [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]

التصفية باستخدام استيعاب القوائم

يمكن استخدام استيعاب القوائم لتصفية العناصر من قائمة معينة. ويُضاف شرط (condition) إلى استيعاب القوائم.

list_name = [expression for loop_variable in container if condition]

في استيعاب القوائم الخاص بالتصفية، لا يُضاف العنصر إلى list_name إلا إذا تحقَّق الشرط.

نقطة تحقق

تصفية قائمة

مفاهيم تطبيقية

التصفية باستخدام استيعاب القوائم

لكل شِفرة تستخدم استيعاب القوائم، اختر القائمة الناتجة الصحيحة في new_list.

4.
my_list = [21, -1, 50, -9, 300, -50, 2]

new_list = [m for m in my_list if m < 0]
  1. [21, 50, 300, 2]
  2. [21, -1, 50, -9, 300, -50, 2]
  3. [-1, -9, -50]
5.
my_string = "This is a home."

new_list = [i for i in my_string if i in 'aeiou']
  1. [i, i, a, o, e]
  2. ['i', 'i'', 'a', 'o', 'e']
  3. Error
6.
new_list = [r for r in range (0, 21, 2) if r%2 != 0]
  1. []
  2. [21]
  3. [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]

جرّب بنفسك

اختيار الكلمات المكونة من خمسة أحرف

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

جرّب بنفسك

كتب تبدأ بحرف "A"

اكتب برنامجًا يختار الكلمات التي تبدأ بحرف "A" في القائمة المعطاة. تأكد من أن القائمة الجديدة مرتبة أبجديًا. أخيرًا، اطبع القائمة الجديدة المرتبة.