كيف يمكنني حذف العنصر الأخير من مجموعة ، أو إنشاء مجموعة جديدة بدون العنصر الأخير؟ المجموعات لا تدعم الفهرسة. لدي مجموعة من الأعداد الصحيحة ، وأريد إزالة الأكبر.
كيف يمكنني حذف العنصر الأخير من مجموعة ، أو إنشاء مجموعة جديدة بدون العنصر الأخير؟ المجموعات لا تدعم الفهرسة. لدي مجموعة من الأعداد الصحيحة ، وأريد إزالة الأكبر.
يمكنك إزالة أي عنصر محدد باستخدام 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 مسبقًا بواسطة نظام وقت التشغيل ، ويتم تخزينها بترتيب رقمي في الذاكرة ، مع معالجة التجزئة الخاصة. أحد آثار ذلك هو أن قيم التجزئة الخاصة بهم مرتبة. بمجرد تجاوز هذا النطاق ، يختلف التجزئة ، كما هو موضح أعلاه:
كما قال الجميع هنا ، المجموعات غير مرتبة ، ولكن إذا كنت تريد إزالة عنصر من المجموعة ، فيمكنك القيام بما يلي (دعنا نطلق على المجموعة a_set):
a_set = set(list(a_set)[:-1])
أريد أن أوضح - أنت لا تزيل العنصر الأخير من المجموعة ، لأنه لا يوجد شيء من هذا القبيل ، ولكنك تقوم بتحويله إلى قائمة ، وإزالة العنصر الأخير ، ثم التحويل مرة أخرى
المجموعات هي مجموعات غير مرتبة. راجع https://docs.python.org/3/tutorial/datastructures.html#sets . حاول استخدام List بدلاً من ذلك للقيام بما تريده. ثم ستقوم طريقة variable.pop (0) بهذه المهمة.
لا أعتقد أنه يمكنك القيام بذلك لأنه لا يوجد last element
من مجموعة. كما ترى من الوثائق https://docs.python.org/2/library/sets.html ، المجموعات غير مرتبة.