حذف العنصر الأخير من مجموعة الثعبان

0

كيف يمكنني حذف العنصر الأخير من مجموعة ، أو إنشاء مجموعة جديدة بدون العنصر الأخير؟ المجموعات لا تدعم الفهرسة. لدي مجموعة من الأعداد الصحيحة ، وأريد إزالة الأكبر.

4 الاجابة

2
افضل جواب

يمكنك إزالة أي عنصر محدد باستخدام remove طريقة:

>>> s = {3, 'a', True}
>>> s
{'a', True, 3}
>>> s.remove(3)
>>> s
{'a', True}

ومع ذلك ، يجب أن يأتي أي مفهوم "الأخير" من خارج المجموعة نفسها ، حيث أن المجموعة لا تنفذ فكرة الأمر الثابت. لاحظ الفرق أعلاه بين القيمة المخصصة والقيمة المطبوعة.


تحديث بعد توضيح OP

لإزالة أكبر عنصر عدديًا في المجموعة:

s.remove(max(s))

علقت:

if a set contains only integers, then the elements are by default listed in ascending order.

هذا غير صحيح. فمثلا:

>>> lll = [3**n for n in range(10)]
>>> sss = set(lll)
>>> sss
{1, 6561, 3, 19683, 9, 2187, 81, 243, 729, 27}

ربما تكون مرتبكًا من بعض تأثيرات الأعداد الصحيحة الصغيرة في Python. يتم تخصيص الثوابت الصحيحة حتى (عادة) 256 مسبقًا بواسطة نظام وقت التشغيل ، ويتم تخزينها بترتيب رقمي في الذاكرة ، مع معالجة التجزئة الخاصة. أحد آثار ذلك هو أن قيم التجزئة الخاصة بهم مرتبة. بمجرد تجاوز هذا النطاق ، يختلف التجزئة ، كما هو موضح أعلاه:

:مؤلف
0

كما قال الجميع هنا ، المجموعات غير مرتبة ، ولكن إذا كنت تريد إزالة عنصر من المجموعة ، فيمكنك القيام بما يلي (دعنا نطلق على المجموعة a_set):

a_set = set(list(a_set)[:-1])

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

:مؤلف
0

المجموعات هي مجموعات غير مرتبة. راجع https://docs.python.org/3/tutorial/datastructures.html#sets . حاول استخدام List بدلاً من ذلك للقيام بما تريده. ثم ستقوم طريقة variable.pop (0) بهذه المهمة.

:مؤلف
0

لا أعتقد أنه يمكنك القيام بذلك لأنه لا يوجد last element من مجموعة. كما ترى من الوثائق https://docs.python.org/2/library/sets.html ، المجموعات غير مرتبة.

:مؤلف
فوق
قائمة طعام