Это немного запутанно. Действительно ли это происходит из стека pop/push
терминологии?
L.pop([index]) → item - удалить и вернуть элемент по индексу (по умолчанию последний). Повышает IndexError, если список пуст или индекс находится за пределами допустимого диапазона.
>>> [1,2].pop()
2
Удалите и верните произвольный элемент набора. Повышает KeyError, если набор пуст.
>>> {1,2}.pop()
1
set.pop
не возвращает первый элемент. Как ясно сказано в помощи, которую вы цитировали, она возвращает произвольный элемент.
И причина этого проста: множества по своей сути неупорядочены. Нет значимого "первого" или "последнего" элемента. 1
1. Поскольку наборы хранятся в виде хеш-таблиц, имеет смысл как по соображениям производительности, так и по простоте, что set.pop
удалит первый элемент в хеш-таблице, который часто будет таким же, как и первый элемент, итератированный множеством, но что не гарантируется.И на самом деле, точно так же, как это верно, в CPython 3.6 - 3.7, чем в 3.3 - 3.5.