Python 함수인 sort 와 sorted 차이 구분 , 자주 헷갈리는 문제

<궁금증>

 

서버 개발이나 코딩 테스트 준비로 python을 자주 사용하는데 헷갈리는 부분이 있었다.

sort 함수와 sorted 함수 중에 어떤 것을 사용해야 하는가였다.

두 함수는 기본적으로 리스트를 정렬해주는 기능을 하는 파이썬 내장 함수 이다.

sort()는 리스트를 오름차순으로 단순 정렬해주는 기능을 하고,

sorted()는 매개변수로 들어온 데이터를 새로운 정렬된 리스트로 만들어서 반환하는 함수라고 한다.

즉, sort는 리스트를 단순 정렬해서 반환하는 것이고, sorted는 기존 리스트는 건드리지 않고 새로운 리스트를 반환한다.

 

 

<예제로 알아보기 >

 

# sort () 메서드

a = [5, 2, 3, 1, 4]

b = a.sort()


print( f"a: {a}")
print( f"b: {b}")

# sorted () 메서드

c = [5, 2, 3, 1, 4]

d = sorted(c)

print( f"c: {c}")
print( f"d: {d}")

 

a: [1, 2, 3, 4, 5]
b: None
c: [5, 2, 3, 1, 4]
d: [1, 2, 3, 4, 5]

 

직접 예제를 작성 해보았다.

sort()를 사용한 a는 정렬되었지만 a.sort()를 반환한 b는 아무런 값이 들어오지 않았다.

sorted()를 사용한 c는 정렬되지 않았고 sorted(c)를 반환한 d는 정렬되어 저장되었다.

 

<결론>

 

list 를 변경하려면 sort()를 사용하고, 새로 정렬된 리스트를 원한다면 sorted()를 사용한다

다른 이터레이터는 sorted만 사용 가능하지만 list는 더 빠른 sort를 사용하는 것이 좋을 것 같다.