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

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

ما هو فهم القائمة في بايثون وكيف يعمل؟

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

من مزايا استخدام قائمة الفهم أنه يمكنك إجراء عدة عمليات في قائمة واحدة.

في المقابل ، يقوم بإنشاء عناصر جديدة وإلحاقها بقائمة فارغة يعلن عنها تلقائيًا. لذلك بدلاً من إنشاء قائمة فارغة يدويًا وإلحاقها بامتداد بالنسبة loop ، يتيح لك فهم قائمة Python القيام بذلك تلقائيًا دون القلق بشأن كيفية ظهور القائمة الجديدة.

يأتي مصطلح "list comprehension" من حقيقة أن جميع العمليات في قائمة Python مخصصة لمتغير مسمى. كما ذكرنا سابقًا ، يتيح لك إجراء عمليات محددة في سطر واحد من التعليمات البرمجية. ثم يقوم بإلحاق الإخراج بقائمة جديدة.

instagram viewer

في النهاية ، يمكنك أيضًا استخدام مخرجات فهم القائمة لأغراض أخرى. هذا لأنه يكدس التعبيرات في متغيرات منفصلة. لذا يمكنك الرجوع إليهم لاحقًا.

على سبيل المثال ، قد تكون كذلك تجريف موقع ويب باستخدام BeautifulSoup. افترض أنك تنوي الحصول على اسم جميع العناصر وأسعارها من موقع الويب.

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

انظر للمثال ادناه:

المنتجات = [i.text for i in bs.find_all ("علامات الأسماء")]
السعر = [i.text لـ i in bs.find_all ("بطاقات الأسعار")]

بمجرد الحصول على المتغيرات الحلقية ، يمكنك وضعها في أعمدة منفصلة في DataFrame باستخدام Python Pandas.

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

ال بالنسبة الحلقة هي مكرر أساسي في قائمة الفهم. بشكل عام ، تأخذ قائمة الفهم في بايثون هذا التنسيق:

ComprehensionVariable = [تعبير عن عناصر في القائمة]

طباعة الفهممتغير لإخراج نتيجة الكود أعلاه على شكل قائمة.

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

على سبيل المثال ، دعنا استخدم حلقة for open للحصول على قائمة بمضاعفات الثلاثة بين 1 و 30:

myList = []
بالنسبة لـ i في النطاق (1 ، 11):
myList.append (i * 3)
طباعة (myList)
المخرجات: [3، 6، 9، 12، 15، 18، 21، 24، 27، 30]

للمقارنة بين الاثنين ، دعونا نفعل نفس الشيء باستخدام قائمة الفهم:

multiplesOf3 = [i * 3 لـ i في النطاق (1 ، 11)]
طباعة (مضاعفات 3)
الإخراج = [3، 6، 9، 12، 15، 18، 21، 24، 27، 30]

يمكنك استخدام قائمة الفهم مع العبارات الشرطية أيضًا. يطبع رمز المثال أدناه جميع الأرقام الفردية بين 1 و 10:

oddNumbers = [i for i in range (1، 11) إن لم يكن i٪ 2 == 2]
طباعة (أرقام فردية)
الإخراج = [1، 3، 5، 7، 9]

الآن ، دعنا أيضًا نعيد كتابة الكود أعلاه باستخدام open بالنسبة عقدة:

myList = []
بالنسبة لـ i في النطاق (1 ، 11):
إذا لم يكن i٪ 2 == 0:
myList.append (i)
طباعة (myList)
الإخراج: [1، 3، 5، 7، 9]

متعلق ب: كيفية إلحاق قائمة في بايثون

تقبل قائمة الفهم أيضًا عبارات if المتداخلة:

oddNumbers = [i for i في النطاق (1 ، 11) إذا لم يكن i٪ 2 == 0 إذا كان i <4]
طباعة (أرقام فردية)
الإخراج: [1، 3]

كما يتطلب الأمر متداخلة بالنسبة عقدة:

someNums = [[i * 2 لـ i في النطاق (1 ، 3)] لـ _ في النطاق (4)]
طباعة (بعض الأرقام)

يمكنك أيضًا الحصول على متداخل عادي بالنسبة حلقة في قائمة الفهم:

someNums = [i * 2 لـ i في النطاق (1 ، 3) لـ k في النطاق (4)]

يمكنك أيضًا معالجة السلاسل باستخدام قائمة فهم قائمة Python. دعنا نلقي نظرة على فهم مضاد للكلمة أدناه:

word = ["هذا برنامج تعليمي لفهم قائمة Python"]
wordCounter = [i.count ('') + 1 لـ i في كلمة]
طباعة (WordCounter)
الإخراج: 7

يمكن لقائمة الفهم أن تقبل أيضًا وظيفة تؤدي عملية معينة. دعنا ندخل وظيفة مضاعفة تحصل على أرقام زوجية في قائمة الفهم لنرى كيف يعمل هذا:

الأعداد = [4 ، 7 ، 8 ، 15 ، 17 ، 10]
مضاعف def (ن):
متعدد = ن * 2
عودة متعددة
multiEven = [المضاعف (i) لـ i في الأرقام إذا كان i٪ 2 == 0]
طباعة (متعددة حتى)
الإخراج: [8، 16، 20]

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

على سبيل المثال ، يمكنك إجراء عملية أخرى على ن ولها متغير مخصص لها. دعنا نعدل الفهم أعلاه لتوليد أرقام زوجية من الأرقام الفردية:

multiEvenFromOdds = [المضاعف (i) لـ i في Numbers إن لم يكن i٪ 2 == 0]
طباعة (multiEvenFromOdds)
الإخراج: [14، 30، 34]

القاموس ومجموعة الفهم

بالإضافة إلى قائمة الفهم ، تقدم Python أيضًا قاموسًا ووظيفة استيعاب محددة.

ألق نظرة على مثال القاموس أدناه لترى كيف يعمل:

المقابلة = {i: i * 2 لـ i في النطاق (10) إن لم يكن i٪ 2 == 0}
طباعة (كورا)
الإخراج: {1: 2 ، 3: 6 ، 5: 10 ، 7: 14 ، 9: 18}

يتكرر الرمز أعلاه من خلال قائمة الأرقام بين 1 و 9 ويجعلها المفاتيح. ثم يخبر بايثون بضرب كل مفتاح في اثنين. أخيرًا ، يقدم نتائج تلك العملية كقيم مقابلة لكل مفتاح في المصفوفة الناتجة.

متعلق ب: كيف تعمل المصفوفات والقوائم في بايثون

مجموعة الفهم تشبه إلى حد ما قائمة الفهم. فيما يلي مثال على مجموعة الفهم:

الأرقام = {i ** (2) لـ i في النطاق (10) إذا كنت٪ 4 == 0}
طباعة (أرقام)
الإخراج: {0، 16، 64}

ومع ذلك ، على عكس list comprehension ، فإن set comprehension تزيل التكرارات:

nums = {i for i في النطاق (20) إذا كان i٪ 2 == 1 لـ k في النطاق (10) إذا كان k٪ 2 == 1}
طباعة (أرقام)
المخرجات: {1، 3، 5، 7، 9، 11، 13، 15، 17، 19}

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

هل يمكنك استخدام قائمة الفهم في كل مرة؟

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

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

بريد الالكتروني
كيفية استخدام Python List Comprehensions (ومتى لا تستخدمها)

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

مواضيع ذات صلة
  • برمجة
  • بايثون
عن المؤلف
إيدوو أوميسولا (تم نشر 55 مقالة)

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

المزيد من Idowu Omisola

اشترك في نشرتنا الإخبارية

انضم إلى النشرة الإخبارية لدينا للحصول على نصائح تقنية ومراجعات وكتب إلكترونية مجانية وصفقات حصرية!

خطوة أخرى أيضا…!

يرجى تأكيد عنوان بريدك الإلكتروني في البريد الإلكتروني الذي أرسلناه لك للتو.

.