복붙노트

[PYTHON] 파이썬의 표준 라이브러리에 정렬 된 컨테이너가없는 이유는 무엇입니까?

PYTHON

파이썬의 표준 라이브러리에 정렬 된 컨테이너가없는 이유는 무엇입니까?

정렬 된 컨테이너가 파이썬에 추가되지 않도록하는 파이썬 디자인 결정 (PEP)이 있습니까?

OrderedDict는 정렬 순서가 아니기 때문에 정렬 된 컨테이너가 아닙니다.

해결법

  1. ==============================

    1.Guido의 부분에 대한 의식적인 디자인 결정입니다 (컬렉션 모듈을 추가하는 것에 대해 다소 주저했습니다). 그의 목표는 응용 프로그램의 데이터 유형을 선택할 때 "한 가지 확실한 방법"을 유지하는 것입니다.

    Guido의 부분에 대한 의식적인 디자인 결정입니다 (컬렉션 모듈을 추가하는 것에 대해 다소 주저했습니다). 그의 목표는 응용 프로그램의 데이터 유형을 선택할 때 "한 가지 확실한 방법"을 유지하는 것입니다.

    기본 개념은 사용자가 내장 유형이 자신의 문제에 대한 올바른 해결책이 아니라는 사실을 깨닫기에 충분히 정교한 경우 적절한 제 3 자 라이브러리를 찾는 것입니다.

    리스트 + 정렬을 감안할 때 list + heapq와 list + bisect는 본질적으로 정렬 된 데이터 구조에 의존하는 많은 유스 케이스를 포함하며 blist와 같은 패키지가 존재하므로이 공간에 더 많은 복잡성을 추가 할 수있는 큰 힘은 없다. 표준 라이브러리

    어떤면에서는 표준 라이브러리에 다차원 배열이없고 NumPy 사람들에게 그 작업을 맡기는 것과 비슷합니다.

  2. ==============================

    2.또한 sorted list, dict 및 set types를 구현하는 python sortedcontainers 모듈이 있습니다. blist와 매우 비슷하지만 순수 Python과 대부분의 경우 더 빠르게 구현됩니다.

    또한 sorted list, dict 및 set types를 구현하는 python sortedcontainers 모듈이 있습니다. blist와 매우 비슷하지만 순수 Python과 대부분의 경우 더 빠르게 구현됩니다.

    >>> from sortedcontainers import SortedSet
    >>> ss = SortedSet([3, 7, 2, 2])
    >>> ss
    SortedSet([2, 3, 7])
    

    또한 다른 패키지에는 드문 기능성이 있습니다.

    >>> from sortedcontainers import SortedDict
    >>> sd = SortedDict((num, num) for num in range(100000))
    >>> sd.iloc[-5] # Lookup the fifth-to-last key.
    99995
    

    면책 조항 : 나는 sortedcontainers 모듈의 저자입니다.

  3. ==============================

    3.sortedset 데이터 형식을 포함하는 blist 모듈도 있습니다.

    sortedset 데이터 형식을 포함하는 blist 모듈도 있습니다.

    sortedset(iterable=(), key=None)
    
    >>> from blist import sortedset
    >>> my_set = sortedset([3,7,2,2])
    sortedset([2, 3, 7]
    
  4. ==============================

    4.정확히 "정렬 된 컨테이너"는 아니지만 표준 라이브러리의 bisect 모듈에 관심이있을 것입니다.이 모듈은 "삽입 할 때마다 목록을 정렬하지 않고 정렬 된 순서로 목록을 유지 관리 할 수 ​​있도록 지원합니다".

    정확히 "정렬 된 컨테이너"는 아니지만 표준 라이브러리의 bisect 모듈에 관심이있을 것입니다.이 모듈은 "삽입 할 때마다 목록을 정렬하지 않고 정렬 된 순서로 목록을 유지 관리 할 수 ​​있도록 지원합니다".

  5. ==============================

    5.표준 라이브러리에는 heapq가 있습니다. 정확히 정렬되지는 않지만 종류는 다릅니다. blist 패키지도 있지만 표준 라이브러리에는 없습니다.

    표준 라이브러리에는 heapq가 있습니다. 정확히 정렬되지는 않지만 종류는 다릅니다. blist 패키지도 있지만 표준 라이브러리에는 없습니다.

  6. ==============================

    6.파이썬리스트가 정렬됩니다. 당신이 그들을 분류하면, 그들은 그 길을 유지합니다. Python 2.7에서는 명시 적으로 순서가 지정된 사전을 유지 관리하기 위해 OrderedDict 유형이 추가되었습니다.

    파이썬리스트가 정렬됩니다. 당신이 그들을 분류하면, 그들은 그 길을 유지합니다. Python 2.7에서는 명시 적으로 순서가 지정된 사전을 유지 관리하기 위해 OrderedDict 유형이 추가되었습니다.

    파이썬에는 집합 (구성원이 고유해야하는 모음)이 있지만 정의에 따라 순서가 지정되지 않습니다. 집합을 정렬하면 목록 만 반환됩니다.

  7. from https://stackoverflow.com/questions/5953205/why-are-there-no-sorted-containers-in-pythons-standard-libraries by cc-by-sa and MIT license