"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكنني إزالة العناصر بأمان من قائمة بيثون أثناء التكرار مع حلقة؟

كيف يمكنني إزالة العناصر بأمان من قائمة بيثون أثناء التكرار مع حلقة؟

نشر في 2025-03-05
تصفح:725

How Can I Safely Remove Elements from a Python List While Iterating with a For Loop?

إزالة العناصر في القوائم أثناء التكرارات للحلقة

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

فهم المشكلة للبند في: طباعة (عنصر) a.remove (item)

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

أثناء التكرار ، يمكن النظر في العديد من الأساليب البديلة:
a = ["a", "b", "c", "d", "e"]
for item in a:
    print(item)
    a.remove(item)

1. طريقة البوب ​​

يمكن استخدام طريقة pop () لإزالة عنصر من القائمة أثناء التكرار. يتضمن هذا النهج استخدام حلقة من الوقت لإزالة العناصر مرارًا وتكرارًا من القائمة:

بينما A: print (A.Pop ())

2. انسخ عناصر غير مطابقة

إذا كانت النتيجة المطلوبة هي إزالة العناصر بناءً على حالة معينة ، يمكن إنشاء قائمة جديدة عن طريق نسخ عناصر لا تتطابق مع الشرط:

result = [] للبند في: إذا كانت الحالة خاطئة: النتيجة. append (عنصر) a = result

a = ["a", "b", "c", "d", "e"]
for item in a:
    print(item)
    a.remove(item)
3. قم بتصفية/قائمة الفهم

تقوم دالة التصفية بتصفية عناصر من القائمة بناءً على شرط محدد ، بينما يقوم الفهم القائمة بإنشاء قائمة جديدة مع عناصر تلبي الشرط: # مرشح A = مرشح (عنصر Lambda: ... ، أ) # قائمة الفهم a = [item for item in a ...]

الاستنتاج
a = ["a", "b", "c", "d", "e"]
for item in a:
    print(item)
    a.remove(item)

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

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3