Re: [26.3.3] set 데이터 타입에서 pop()
, 도장_ 관리자님이 작성파이썬 2.x와 파이썬 3.x, 최신 버전인 파이썬 3.7까지도 set의 pop은 랜덤한 값을 반환합니다.
파이썬 3.7 공식 문서를 보면(페이지 상단에 버전과 링크에 3.7 버전이 포함되어 있습니다)
https://docs.python.org/3.7/library/stdtypes.html#set-types-set-frozenset
Set Types — set
, frozenset
A set object is an unordered collection of distinct hashable objects.
순서 없는 컬렉션(unordered collection)으로 되어 있습니다. distinct hashtable objects로 되어 있다고 되어 있습니다. 간단히 내부에서는 해시테이블로 구현하고 있다는 뜻입니다. set에 추가되는 값에 대해 해시 값을 구해서 할당한다는 뜻입니다. 따라서 set에 많은 값이 들어 있고, 그에 따라 해시 값 충돌이 발생한다면 반환되는 값은 임의의 값이 됩니다. 예를 들어 해시 값 20에 두 개의 값이 할당되어 있다면 어떤 값이 반환될지 알 수 없습니다.공식 문서의 Set types 아래에 보면 메서드 목록이 있습니다.
-
pop
() Remove and return an arbitrary element from the set. Raises
KeyError
if the set is empty.
원소가 몇 개 없을 때 들어간 순서대로 꺼내오는 것처럼 보이는 것은 우연의 일치이므로 우연의 일치를 가정한 코드는 작성하지 않는 것이 바람직합니다.