إزالة العناصر من قائمة (مصفوفة) في بايثون: clear () ، pop () ، remove () ، del

اعمال

لإزالة عنصر من قائمة (مصفوفة) لقائمة الأنواع في Python ، استخدم طرق القائمة clear () ، pop () و remove (). يمكنك أيضًا تحديد موضع القائمة ونطاقها باستخدام الفهرس أو الشريحة ثم حذفها باستخدام عبارة del.

يتم توفير المعلومات التالية هنا.

  • قم بإزالة كافة العناصر:clear()
  • احذف عنصرًا في الموضع المحدد واحصل على قيمته.:pop()
  • يبحث عن العناصر ذات القيمة المحددة ويزيل العنصر الأول.:remove()
  • الحذف بتحديد الموضع والنطاق في شريحة الفهرس:del
  • حذف الدُفعة عناصر متعددة تفي بالمعايير.:بيان إدراج القائمة

لاحظ أن القوائم يمكن أن تخزن بيانات من أنواع مختلفة ، وتختلف تمامًا عن المصفوفات. استخدم مصفوفة (مكتبة قياسية) أو NumPy عندما تريد معالجة المصفوفات للعمليات التي تتطلب حجم الذاكرة أو عنوان الذاكرة ، أو للحساب الرقمي للبيانات واسعة النطاق.

قم بإزالة كافة العناصر:clear()

في طريقة القائمة clear () ، تتم إزالة جميع العناصر ، مما ينتج عنه قائمة فارغة.

l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

l.clear()
print(l)
# []

احذف عنصرًا في الموضع المحدد واحصل على قيمته.:pop()

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

الرقم الأول (الأولي) هو 0.

l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print(l.pop(0))
# 0

print(l)
# [1, 2, 3, 4, 5, 6, 7, 8, 9]

print(l.pop(3))
# 4

print(l)
# [1, 2, 3, 5, 6, 7, 8, 9]

يمكن أيضًا استخدام قيمة سالبة لتحديد الموضع من النهاية (الأخير). النهاية (الأخيرة) هي -1.

print(l.pop(-2))
# 8

print(l)
# [1, 2, 3, 5, 6, 7, 9]

إذا تم حذف الوسيطة ولم يتم تحديد موضع ، فسيتم حذف العنصر الموجود في النهاية (الأخيرة).

print(l.pop())
# 9

print(l)
# [1, 2, 3, 5, 6, 7]

سيؤدي تحديد منصب غير موجود إلى حدوث خطأ.

# print(l.pop(100))
# IndexError: pop index out of range

لاحظ أن pop (0) ، الذي يزيل العنصر الأول ، يتطلب التكلفة التالية وليست عملية فعالة. انظر الصفحة التالية في الويكي الرسمي للتعرف على التعقيد الحسابي للعمليات المختلفة في القوائم.
O(n)

O(1)يتم توفير نوع deque في وحدة مجموعات المكتبة القياسية كنوع يحذف العناصر إلى الأعلى بهذه التكلفة. على سبيل المثال ، إذا كنت تريد معاملة البيانات على أنها قائمة انتظار (FIFO) ، فمن الأفضل استخدام deque.

يبحث عن العناصر ذات القيمة المحددة ويزيل العنصر الأول.:remove()

يمكن استخدام طريقة القائمة remove () للبحث عن عناصر بنفس القيمة المحددة وإزالة العنصر الأول.

l = ['Alice', 'Bob', 'Charlie', 'Bob', 'Dave']
print(l)
# ['Alice', 'Bob', 'Charlie', 'Bob', 'Dave']

l.remove('Alice')
print(l)
# ['Bob', 'Charlie', 'Bob', 'Dave']

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

l.remove('Bob')
print(l)
# ['Charlie', 'Bob', 'Dave']

إذا تم تحديد قيمة غير موجودة ، يحدث خطأ.

# l.remove('xxx')
# ValueError: list.remove(x): x not in list

الحذف بتحديد الموضع والنطاق في شريحة الفهرس:del

يمكنك أيضًا استخدام عبارة del لإزالة العناصر من القائمة.

حدد العنصر المراد حذفه بواسطة الفهرس الخاص به. المؤشر الأول (الأولي) هو 0 ، والفهرس الأخير (النهائي) هو -1.

l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

del l[0]
print(l)
# [1, 2, 3, 4, 5, 6, 7, 8, 9]

del l[-1]
print(l)
# [1, 2, 3, 4, 5, 6, 7, 8]

del l[6]
print(l)
# [1, 2, 3, 4, 5, 6, 8]

إذا قمت بتحديد نطاق بشرائح ، يمكنك حذف عدة عناصر مرة واحدة.

l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

del l[2:5]
print(l)
# [0, 1, 5, 6, 7, 8, 9]

l = list(range(10))
del l[:3]
print(l)
# [3, 4, 5, 6, 7, 8, 9]

l = list(range(10))
del l[4:]
print(l)
# [0, 1, 2, 3]

l = list(range(10))
del l[-3:]
print(l)
# [0, 1, 2, 3, 4, 5, 6]

من الممكن أيضًا تحديد النطاق بالكامل وحذف جميع العناصر.

l = list(range(10))
del l[:]
print(l)
# []

[start:stop:step]إذا قمت بتحديد النطاق في الشريحة بهذه الطريقة وقمت بتحديد خطوة تزايدية ، يمكنك حذف عدة عناصر قفز مرة واحدة.

l = list(range(10))
del l[2:8:2]
print(l)
# [0, 1, 3, 5, 7, 8, 9]

l = list(range(10))
del l[::3]
print(l)
# [1, 2, 4, 5, 7, 8]

لمزيد من المعلومات حول التقطيع ، راجع المقالة التالية.

حذف الدُفعة عناصر متعددة تفي بالمعايير.:بيان إدراج القائمة

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

يظهر أدناه مثال لإزالة العناصر الفردية أو الزوجية (= ترك العناصر الفردية أو الزوجية).
%هذا هو العامل المتبقي.
i % 2
هذا هو باقي i مقسومًا على 2.

في تدوين قائمة الفهم ، يتم إنشاء قائمة جديدة. على عكس طرق نوع القائمة التي تم تقديمها حتى الآن ، تظل القائمة الأصلية دون تغيير.

l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print([i for i in l if i % 2 == 0])
# [0, 2, 4, 6, 8]

print([i for i in l if i % 2 != 0])
# [1, 3, 5, 7, 9]

print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

أمثلة أخرى. يمكن إجراء مجموعة متنوعة من المعالجة بناءً على التعبير الشرطي.

l = ['Alice', 'Bob', 'Charlie', 'Bob', 'David']
print(l)
# ['Alice', 'Bob', 'Charlie', 'Bob', 'David']

print([s for s in l if s != 'Bob'])
# ['Alice', 'Charlie', 'David']

print([s for s in l if s.endswith('e')])
# ['Alice', 'Charlie']

إذا كنت تريد إزالة العناصر المكررة ، فاستخدم نوع المجموعة المحددة.

print(list(set(l)))
# ['David', 'Alice', 'Charlie', 'Bob']
Copied title and URL