: 리스트명.sort( ) 형식으로 리스트형의 메소드
a1 = [3,2,1]
print('정렬 전: ', a1)
a1.sort()
print('정렬 후: ', a1)
a2 = a1.sort()
print('정렬된 값이 반환되지 않음: ', a2)
정렬 전: [3,2,1]
정렬 후: [1,2,3]
정렬된 값이 반환되지 않음: None
: sorted(리스트명)으로 파이썬의 내장함수
a1 = [3,2,1]
print('정렬 전: ', a1)
a2 = sorted(a1)
print('정렬 후: ', a2)
print('원본 리스트의 값은 유지 - a1 : ', a1)
print('정렬된 값이 반환 - a2 : ', a2)
정렬 전: [3,2,1]
정렬 후: [1,2,3]
원본 리스트의 값은 유지 - a1 : [3,2,1]
정렬된 값이 반환 - a2 : [1,2,3]
앞서 살펴본 sort와 sorted는 기본적으로 오름차순으로 정렬된다. sort와 sorted 모두 key와 reverse를 통해 원하는 순서로 정렬할 수 있다.
(sort와 sorted에서 key와 reverse를 통해 정렬하는 방법은 같으니 예시를 들 때에는 sort를 사용하도록 하겠다.)
내림차순으로 정렬하고 싶을 때에는 'reverse' 값을 'True' 로 설정해주면 된다. 기본 값이 오름차순 정렬이기 때문에 오름차순 정렬 시에는 생략 가능하다.
a1 = [3,1,2]
a1.sort()
print('오름차순 정렬: ', a1)
a1.sort(reverse=True)
print('내림차순 정렬: ', a1)
오름차순 정렬: [1,2,3]
내림차순 정렬: [3,2,1]
key의 값을 지정해줌으로써 배열 내에서 원하는 값을 통해 정렬할 수 있다
+) key 값을 따로 지정하지 않으면 기본적으로 오름차순 정렬을 해준다.
a1 = [[1, 1], [3, 4], [2, 5], [1, 3]] 라는 배열로 예시를 들어 살펴보도록 하겠다.
: 첫번째 인덱스가 동일한 경우, 두 번째 인덱스를 기준으로 오름차순 정렬을 해준다.
a1 = [[1, 1], [3, 4], [2, 5], [1, 3]]
a1.sort(key=lambda x:x[0])
print('리스트의 첫번째 인덱스를 기준으로 오름차순 정렬: ', a1)
리스트의 첫번째 인덱스를 기준으로 오름차순 정렬: [[1,1],[1,3],[2,5],[3,4]]
: 두번째 인덱스가 동일한 경우, 첫번째 인덱스를 기준으로 오름차순 정렬을 해준다.
a1 = [[1, 1], [3, 4], [2, 5], [1, 3]]
a1.sort(key=lambda x:x[1])
print('리스트의 두 번째 인덱스를 기준으로 오름차순 정렬: ', a1)
리스트의 두 번째 인덱스를 기준으로 오름차순 정렬: [[1,1],[1,3],[3,4],[2,5]]
만약, 두 번째 인덱스가 동일할 때 첫번째 인덱스를 정렬하는 기준을 정하고 싶다면 추가로 값을 적어주면 된다.
a1 = [[1, 1], [3, 4], [2, 5], [1, 3]]
a1.sort(key=lambda x: (x[1], -x[0]))
print('두 번째 인덱스를 기준으로 오름차순 정렬, 동일한 경우 첫번째는 내림차순 정렬: ', a1)
두 번째 인덱스를 기준으로 오름차순 정렬, 동일한 경우 첫번째는 내림차순 정렬
정렬: [[1,3],[1,1],[3,4],[2,5]]
- - - - - -
a1 = [[1, 1], [3, 4], [2, 5], [1, 3]]
a1.sort(key=lambda x: (x[1], x[0]))
print('두 번째 인덱스를 기준으로 오름차순 정렬, 동일한 경우 첫번째도 오름차순 정렬:', a1)
두 번째 인덱스를 기준으로 오름차순 정렬, 동일한 경우 첫번째도 오름차순 정렬
:[[1,1],[1,3],[3,4],[2,5]]