Python/Algorithm

[Algorithm] sort()와 sorted()의 차이점

언킴 2022. 8. 18. 21:16
반응형

Contents

     

     

    파이썬에서 리스트(List)를 정렬할 때 주로 사용하는 함수는 sort()와 sorted()가 있다. 두 개의 함수는 둘 다 정렬을 할 때 사용하지만 조금씩 사용하는 방법의 차이가 있다. 두 함수의 차이점에 대해서 알아보자.

     

    sorted

    sorted()의 경우 정렬할 때 쓰는 함수이며, 숫자 뿐만 아니라 문자까지도 정렬이 가능하다. 그러나, 문자를 정렬할 경우 리스트 구조로 반환이 되기 때문에 join 함수를 사용해서 다시 합쳐주어야 한다. 

    a = [2, 5, 1, 9, 7]
    sorted(a)
    # [1, 2, 5, 7, 9]
    
    b = 'zbdaf'
    sorted(b)
    # ['a', 'b', 'd', 'f', 'z']
    
    ''.join(sorted(b))
    # 'abdfz'

     

     

    sort

    sort 함수는 sorted 함수와는 달리 반환되는 값이 없다. 이는 제자리 정렬(In-place Sort)이기 때문이다. 제자리 정렬은 리스트 자체를 정렬하는 것으로 입력을 출력으로 덮어쓰기 때문에 별도의 추가 공간이 필요하지 않고, 반환되는 값이 없다. 따라서 sorted 함수와는 다르기에 주의해서 사용하여야 한다. 

    a.sort()
    a = a.sort() # 아무런 값도 반환되지 않는다.

     

    sort, sorted 함수는 내부에 key라는 인자가 존재해서, 정렬 기준을 본인이 원하는 형태로 지정해서 정렬하는 것도 가능하다. 원래 있는 함수를 사용해도 되고, 본인이 직접 만든 함수를 지정해도 무방하다.

    a = ['aaa', 'bb', 'c']
    sorted(a, key=len)