Почему set pop возвращает первый элемент, а list pop возвращает последний элемент в python

1

Это немного запутанно. Действительно ли это происходит из стека pop/push терминологии?

L.pop([index]) → item - удалить и вернуть элемент по индексу (по умолчанию последний). Повышает IndexError, если список пуст или индекс находится за пределами допустимого диапазона.

>>> [1,2].pop()
2

Удалите и верните произвольный элемент набора. Повышает KeyError, если набор пуст.

>>> {1,2}.pop()
1
Теги:
stack

1 ответ

2
Лучший ответ

set.pop не возвращает первый элемент. Как ясно сказано в помощи, которую вы цитировали, она возвращает произвольный элемент.

И причина этого проста: множества по своей сути неупорядочены. Нет значимого "первого" или "последнего" элемента. 1

1. Поскольку наборы хранятся в виде хеш-таблиц, имеет смысл как по соображениям производительности, так и по простоте, что set.pop удалит первый элемент в хеш-таблице, который часто будет таким же, как и первый элемент, итератированный множеством, но что не гарантируется.И на самом деле, точно так же, как это верно, в CPython 3.6 - 3.7, чем в 3.3 - 3.5.

  • 1
    @ MohanBabu Нет, это не так.
  • 0
    ты прав @abarnert
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню