Python 정렬(sorting), 역순 정렬, 제자리(in-place) 정렬, 구조화 정렬
a = [2, 1, 5, 4, 3]
b = sorted(a)
print(a) # [2, 1, 5, 4, 3]
print(b) # [1, 2, 3, 4, 5]
- 제자리 정렬(in-place sorting)
- 제자리 정렬을 사용하면 정렬할 대상이 담겨 있는 변수 자체를 정렬된 형태로 바꿔 버립니다. 기존의 정렬되기 전의 모습은 잃게 됩니다.
- 정렬된 결과를 assign할 l-value는 필요 없습니다.
a = [2, 1, 5, 4, 3]
a.sort()
print(a) # [1, 2, 3, 4, 5]
- 역순 정렬(reverse sorting)
- reverse 인자를 True로 줌으로써 내림차순 정렬을 할 수 있습니다.
- reverse 인자는 default로 False 상태입니다. reverse가 False면 정순(정방향) 정렬을 합니다.
a = [2, 1, 5, 4, 3]
b = sorted(a, reverse=True)
a.sort(reverse=True)
print(a) # [5, 4, 3, 2, 1]
print(b) # [5, 4, 3, 2, 1]
- 구조화 정렬(structured sorting)
- 정렬할 element들이 정렬 가능한 스칼라 값이 아닐 때, 어떤 기준으로 정렬을 수행할지 명시해 주어야 합니다.
- key 인자에 lambda 함수를 주어 그 기준을 명시할 수 있습니다. lambda 함수 대신 일반적으로 정의된 함수를 사용할 수도 있습니다.
- 2차 tuple들의 list를 정렬하되(element는 tuple) 각 tuple의 두 번째 항목을 기준으로 하라는 기준을 제시해 보았습니다.
a = [('a', 2), ('b', 1), ('c', 5), ('d', 4), ('e', 3)]
a.sort(key=lambda x: x[1])
print(a) # [('b', 1), ('a', 2), ('e', 3), ('d', 4), ('c', 5)]