[t:/]$ 지식_

파이썬 신비의 소팅

2022/07/04

https://www.facebook.com/groups/pythonkorea/posts/5249680001781785/

파이썬에서 set은 O(1)이다. 이런 자료구조의 경우 주로 해시를 쓰는데, 해시가 O(1)으로 주로 알려져 있지만 사실은 논리적으로만 그런데 버킷의 카디널리티를 무한으로 가져갈 수가 없기 때문이다. 즉 [1,2,3,4]의 데이터에 대해 버킷이 [1, 2, 3] 만 있다면 쫑이 나니까 쫑을 피한다고 이러쿵저러쿵 해야하고 O(1)은 이미 깨진다.

그리하야 내부적으로 RB-Tree를 백업으로 쓰는데, 얘는 자동 리밸런싱을 하면서 가장 좌측의 자식이 가장 작은 값을 갖는 특성이 있다.

이런 트리의 직렬화 함수를 짜면 또 가장 좌측 자식 놈 부터 순회하기 마련인데,

퍼온 글에서 "list(set()) 했더니 쏘팅이 됐어요!"는 여기에서 기인 한 것으로 보인다.

하여간 좌측 자식들이 문제다. "좌파입니다. 답변하지 마십쇼." 지구는 평평하니까요.









[t:/] is not "technology - root". dawnsea, rss