파이썬 - Python sort sorted 차이 (예시 포함)
파이썬에서 배열 정렬 시 사용할 수 있는 sort()와 sorted()함수의 사용법을 비교해보자.
sort() | sorted() | |
결과 | 원본 데이터를 정렬한다 | 복사본을 만들어 정렬한다 (원본 유지) |
오름차순 정렬 (기본) | a.sort() | result = sorted(a) |
내림차순 정렬 | a.sort(reverse = True) | result = sorted(a, reverse = True) |
*a라는 배열을 정렬하고, sorted()의 경우 정렬된 복사본을 result라는 변수에 담는다.
복잡한 조건으로 정렬하기
예를 들어 배열 a의 원소가 a = [(1,2), (3,4)]와 같이 튜플로 이루어진 경우,
다음과 같이 복잡한 조건을 주어 정렬할 수 있다.
0-1. 각 원소의 첫 번째 인자를 기준으로 오름차순 정렬하고, 그 안에서 두 번째 인자를 기준으로 오름차순 정렬
a.sort()
result = sorted(a)
0-2. 각 원소의 첫 번째 인자를 기준으로 내림차순 정렬하고, 그 안에서 두 번째 인자를 기준으로 내림차순 정렬
a.sort(reverse = True)
result = sorted(a, reverse = True)
1-1. 각 원소의 첫 번째 인자를 기준으로 오름차순 정렬하고, 그 안에서 나머지는 등장 순서대로 정렬
a.sort(key=lambda x: x[0])
result = sorted(a, key = lambda x: x[0])
1-2. 각 원소의 두 번째 인자를 기준으로 오름차순 정렬하고, 그 안에서 나머지는 등장 순서대로 정렬
a.sort(key=lambda x: x[1])
result = sorted(a, key = lambda x: x[1])
2. 각 원소의 두 번째 인자를 기준으로 오름차순 정렬한 뒤, 첫 번째 인자를 기준으로 오름차순 정렬하기
a.sort(key = lambda x: (x[1], x[0]))
result = sorted(a, key = lambda x: (x[1], x[0]))
3-1. 각 원소의 첫 번째 인자를 기준으로 오름차순 정렬한 뒤, 두 번째 인자를 기준으로 내림차순 정렬하기
a.sort(key=lambda x: (x[0], -x[1]))
result = sorted(a, key = lambda x: (x[0], -x[1]))
3-2. 각 원소의 첫 번째 인자를 기준으로 내림차순 정렬한 뒤, 두 번째 인자를 기준으로 오름차순 정렬하기
a.sort(key=lambda x: (-x[0], x[1]))
result = sorted(a, key=lambda x: (-x[0],x[1]))
또한, 인자 외에도 다음과 같이 다른 조건을 줄 수도 있다.
1. 원소의 길이를 기준으로 오름차순 정렬하기(점점 길어지게)
a.sort(key = lambda x : len(x))
result = sorted(a, key = lambda x : len(x))
2. 원소의 길이를 기준으로 내림차순 정렬하기 (점점 짧아지게)
a.sort(key = lambda x : len(x), reverse = True)
result = sorted(a, key = lambda x: len(x), reverse = True)