الثلاثاء، 22 أكتوبر 2024

كيفية حذف كائن من قائمة في بايثون؟ 5 طرق

 قائمة بايثون هي مجموعة من الكائنات المفهرسة والمرتبة والقابلة للتغيير.

هناك عدة طرق مختلفة لحذف عنصر القائمة.

  • سننظر أولاً إلى كيفية حذف عناصر فردية من القائمة.
  • وبعد ذلك قم بالانتهاء من إزالة العديد من الكائنات.

الطريقة 1 – ()remove

list.remove() هو تابع قائمة مضمنة يقوم بإزالة العنصر الأول الذي يتطابق مع القيمة التي تم تمريرها إلى الدالة، والمعروفة أيضًا باسم “الإزالة حسب القيمة”.

مثال يوضح متغيرًا يسمى food وهو عبارة عن قائمة تحتوي على 3 عناصر تسمى pizza وfries وtacos.

1
2
3
>>> food = ["pizza", "fries", "tacos"]
>>> food
['pizza', 'fries', 'tacos']

لحذف fries من القائمة، نستدعي التابع remove ونمرر fries كسلسلة.

1
2
3
>>> food.remove("fries")
>>> food
['pizza', 'tacos']

يوضح المثال التالي قائمة بدرجات الحرارة.

1
2
3
>>> temperatures = [26, 27, 20, 31, 27, 26]
>>> temperatures
[26, 27, 20, 31, 27, 26]

لاحظ وجود عناصر مكررة وهي 26 و27. سيؤدي استدعاء التابع remove على 27 إلى حذف أول ظهور كان في الموضع الثاني.

1
2
3
>>> temperatures.remove(27)
>>> temperatures
[26, 20, 31, 27, 26]

وإذا التابع remove في 26،

1
2
3
4
>>> temperatures.remove(26)
>>> temperatures
[20, 31, 27, 26]
>>>

تم حذف التواجد الأول وأصبح الرقم 20 هو العنصر الأول في القائمة.

الطريقة الثانية – ()pop

تابع القائمة المضمن التالي الدي سنعرضه هو pop(). لن يقوم list.pop() بإزالة عنصر من القائمة فحسب، بل سيعيد العنصر أيضًا.

العنصر الافتراضي الذي يتم إرجاعه وحذفه، إذا لم يتم تمرير أي شيء إلى الوظيفة، هو العنصر الأخير في القائمة.

يتماشى هذا مع بنية البيانات المعروفة باسم  stack والتي تظهر السلوك المعروف باسم “آخر ما يدخل أولاً يخرج”، أو LIFO. المصطلح المستخدم لإضافة عنصر هو “push”، ولإزالة عنصر هو “pop”. بصريًا، يشبه stack كومة من الأطباق حيث ستستقر كل لوحة إضافية مضافة فوق اللوحة الموجودة.

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

1
2
3
4
5
6
>>> food = []
>>> food.append("pizza")
>>> food.append("fries")
>>> food.append("tacos")
>>> food
['pizza', 'fries', 'tacos']

بعد إنشاء قائمتنا المكونة من 3 عناصر، نستدعي التابع pop() دون تمرير أي شيء إليه لإزالة العنصر الأخير من القائمة أثناء تعيين القيمة إلى متغير.

1
2
3
4
5
6
>>> my_lunch = food.pop()
>>> food
['pizza', 'fries']
>>> my_lunch
'tacos'
>>>

تم إرجاع العنصر الأخير وحذفه من القائمة، ولم يتبق لدينا سوى pizza وfries. يحتوي متغير my_lunch الآن على سلسلة tacos.

يتيح لنا التابع pop() أيضًا إزالة عنصر من القائمة حسب الفهرس. لنبدأ بالعناصر الغذائية الثلاثة مرة أخرى.

1
2
3
4
5
>>> food
['pizza', 'fries']
>>> food.append('tacos')
>>> food
['pizza', 'fries', 'tacos']

وهذه المرة سوف نزيل كلمة pizza. إذا مررناها كسلسلة اسمية، فلن تعمل.

1
2
3
4
5
>>> food.pop('pizza')
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
TypeError: 'str' object cannot be interpreted as an integer
>>>

لذلك تأكد من إدخال فهرس العنصر الذي تريد حذفه. وسنعيده إلى متغير يسمى your_lunch.

1
2
3
4
5
6
>>> your_lunch = food.pop(0)
>>> food
['fries', 'tacos']
>>> your_lunch
'pizza'
>>>

كما ترى، تمت إزالة العنصر الأول بواسطة فهرسه وحفظه في المتغير الجديد.

الطريقة 3 – ()clear

سيؤدي تابع القائمة clear() هذا إلى إزالة جميع العناصر من القائمة. فلنبدأ أولاً بتعيين متغير الطعام الخاص بنا مرة أخرى إلى قائمة مكونة من ثلاثة أطعمة.

1
2
3
4
5
6
7
8
>>> food = ['pizza', 'fries', 'tacos']
>>> food
['pizza', 'fries', 'tacos']
And call the clear function.
>>> food.clear()
>>> food
[]
>>>

كما هو موضح أعلاه، أصبح متغير الطعام الآن عبارة عن قائمة فارغة.

الطريقة 4 – del

كما ذكرنا في الطريقة 2، يمكننا استخدام التابع pop() لحذف عنصر وإرجاعه من خلال تحديد فهرسه.

ولكن ماذا لو لم تكن بحاجة إلى إرجاع العنصر؟

وهنا يأتي دور الكلمة الرئيسية del.

لنعد قائمة درجات الحرارة مرة أخرى، وسنحذف العنصر الأخير الذي يحمل الرقم 27 ويقع عند المؤشر 9.

1
2
3
4
>>> temperatures = [19, 20, 19, 25, 19, 22, 19, 30, 17, 27]
>>> del temperatures[9]
>>> temperatures
[19, 20, 19, 25, 19, 22, 19, 30, 17]

ستعمل عبارة del مع التقطيع والفهرسة السلبية في Python أيضًا كما هو موضح في الأمثلة التالية.

1
2
3
4
>>> temperatures = [19, 20, 19, 25, 19, 22, 19, 30, 17, 27]
>>> del temperatures[-1]
>>> temperatures
[19, 20, 19, 25, 19, 22, 19, 30, 17]

يمكن استخدام التقطيع لإزالة عناصر متعددة من القائمة.

لنحدد حذف كل عنصر ثاني بدءًا من 0 إلى 7، وهي القيمة 19.

1
2
3
4
5
>>> temperatures = [19, 20, 19, 25, 19, 22, 19, 30, 17, 27]
>>> del temperatures[0:7:2]
>>> temperatures
[20, 25, 22, 30, 17, 27]
>>>

وأخيرًا، يمكننا استخدام عبارة del لإزالة جميع العناصر من القائمة، على غرار clear().

1
2
3
4
5
>>> temperatures = [19, 20, 19, 25, 19, 22, 19, 30, 17, 27]
>>> del temperatures[:]
>>> temperatures
[]
>>>

طريقة بديلة لحذف كافة العناصر عن طريق استبدال كافة العناصر بقائمة فارغة باستخدام ميزة Python تسمى تعيين الشريحة.

1
2
3
4
5
>>> temperatures = [19, 20, 19, 25, 19, 22, 19, 30, 17, 27]
>>> temperatures[:] = []
>>> temperatures
[]
>>>

الطريقة الخامسة – فهم القائمة

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

ومع ذلك، ماذا لو كنا بحاجة إلى إزالة عناصر متعددة بناءً على شرط ما؟

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

سنستخدم وحدة string، وهي تحتوي على ثابت مدمج يسمى printable، والذي يتكون من جميع الأحرف القابلة للطباعة.

1
2
3
>>> import string
>>> string.printable
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c'

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

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

1
2
3
4
5
6
>>> print(string.printable)
0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
 
 
 
>>>

دعنا نستخدم فهم القائمة لحذف المسافات البيضاء. لحسن الحظ، تتضمن وحدة السلسلة أيضًا ثابتًا لذلك!

1
2
3
>>> string.whitespace
' \t\n\r\x0b\x0c'
>>>

سيساعدنا هذا في تحديد شرطنا لفهم القائمة.

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

1
2
3
4
>>> all_chars = [x for x in string.printable]
>>> all_chars
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '!', '"', '#', '$', '%', '&', "'", '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '@', '[', '\\', ']', '^', '_', '`', '{', '|', '}', '~', ' ', '\t', '\n', '\r', '\x0b', '\x0c']
>>>

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

1
2
3
4
>>> all_chars = [x for x in all_chars if x not in string.whitespace]
>>> all_chars
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '!', '"', '#', '$', '%', '&', "'", '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '@', '[', '\\', ']', '^', '_', '`', '{', '|', '}', '~']
>>>

لقد نجحت هذه الحيلة! والآن أصبحت قائمتنا تحتوي على أحرف قابلة للطباعة باستثناء المسافات البيضاء.

مثال سريع آخر: نحتاج إلى قائمة من الأعداد الزوجية من 1 إلى 100.

ابدأ بإنشاء قائمة بالأرقام ضمن هذا النطاق.

1
2
3
>>> even_numbers = [x for x in range(1,101)]
>>> even_numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100]

ثم استخدم فهم القائمة للتحقق مما إذا كان كل رقم له باقي 0 عند القسمة على 2.

1
2
3
4
>>> even_numbers = [x for x in even_numbers if x % 2 == 0]
>>> even_numbers
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100]
>>>

اليوم، تناولنا 5 طرق مختلفة لحذف كائن من قائمة في بايثون. الطرق الثلاث الأولى عبارة عن وظائف قائمة مضمنة: remove وpop وclear.

تُستخدم هذه لحذف عناصر فردية من القائمة.

اعتمادًا على موقفك، يمكنك إما تحديد قيمة الكائن باستخدام دالة remove() أو مؤشره باستخدام دالة pop(). تذكر أن دالة pop() ستعيد الكائن، لذا إذا لم يكن هناك حاجة إليه في برنامجك، فيمكنك استخدام عبارة del.


بالإضافة إلى ذلك، باستخدام del، يمكننا تحديد نطاق من الكائنات التي نريد إزالتها باستخدام تقطيع Python.

لقد نظرنا أيضًا إلى طرق مختلفة لإزالة جميع العناصر من القائمة باستخدام del، وclear، واستبدال جميع العناصر بقائمة فارغة.

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

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

ليست هناك تعليقات:

إرسال تعليق

جلب البيانات من صفحة ويب باستخدام Selenium

  في هذا الدرس، سننشئ أداة لاستخراج البيانات من أي موقع ويب باستخدام Selenium. Selenium هو مشروع مفتوح المصدر يستخدم لأتمتة المتصفحات. وهو ي...