Найти - Пользователи
Полная версия: Метод pop() множеств
Начало » Python для новичков » Метод pop() множеств
1
ramses
nums = {i for i in range(1, 51)}

for i in range(10):
for j in range(5):
print("{: >3}".format(str(nums.pop())), end="")
print()
Почему выводится по порядку? nums - это же множество. А метод pop() удаляет и выводит случайный элемент. Не пойму.. Версия питона 3.2.1.
Isem
Это случайность.
nums = set('abcdefgh')
while nums:
print( nums.pop() )
nums = {i for i in range(100000,10000)}
while nums: print( nums.pop() )
GaiveR
По всей видимости pop() реализован так, что удаляет и возвращает первый элемент в множестве. А т.к. элементы в множестве хранятся в произвольном порядке(вернее так, как удобнее интерпретатору для выполнения других операций), то и в доках написано что будет возвращен произвольный элемент.

Числа удобно хранить в порядке возрастания.
L = [randrange(1, 100) for i in range(100)]
print('list: ', L)
S = set(L)
print('set: ', S)
Потому и результат такой.

P.S. все это лишь мои предположения, если что прошу более опытных товарищей меня поправить
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB