파이썬에서 정렬 기능을 가진 함수는 크게 sorted(), .sort()를 사용한다.
a = [(1, 2), (3, -2), (-4, 9), (5, 7)]
# 아무 인자 없이 sorted()만 사용 했을 경우, 내림차순으로 기본 정렬된다.
b = sorted(a)
print(b) # [(-4, 9), (1, 2), (3, -2), (5, 7)]
# key 인자에 함수를 넘겨주면 해당 함수의 반환값을 비교하여 순서대로 정렬한다.
# 익명함수 lambda 사용한 sorted함수
c = sorted(a, key=lambda x: x[0])
d = sorted(a, key=lambda x: x[1])
print(c) # [(-4, 9), (1, 2), (3, -2), (5, 7)]
print(d) # [(3, -2), (1, 2), (5, 7), (-4, 9)]
# 첫 번째 인자를 기준으로 오름차순으로 먼저 정렬하고,
# 그 안에서 다음 두 번째 인자를 기준으로 내림차순 또는 오름차순으로 정렬하게 하려면
e = [(0, 2), (0, -1), (3, 5), (7, 2), (1, 1), (1, 0)]
f = sorted(e, key=lambda x: (x[0], x[1])) #오름차순
g = sorted(e, key=lambda x: (x[0], -x[1])) #내림차순
print(f) #[(0, -1), (0, 2), (1, 0), (1, 1), (3, 5), (7, 2)]
print(g) #[(0, 2), (0, -1), (1, 1), (1, 0), (3, 5), (7, 2)]
- sorted()의 key 인자로, 내가 기준으로 지정하려는 비교 함수를 넣어준다.
- 비교 함수는 익명함수(lambda)도 가능하고, 별도로 함수를 만들어 사용해도 된다.
- 비교할 아이템의 요소가 여러개일 경우, 튜플로 순서를 묶어 사용한다. ( - 를 붙이면, 반대로 정렬을 한다.)
반응형
'파이썬' 카테고리의 다른 글
[Python] 리스트(List) (0) | 2020.05.05 |
---|---|
[Python] 문자열 다루기(2) - 문자열 함수 (0) | 2020.05.05 |
[Python] 문자열 다루기(1) - 연산, 인덱싱, 슬라이싱, 포매팅 (0) | 2020.05.05 |
Python 프로그래밍 기초 문법 - 자료형(1) (0) | 2020.04.11 |
Python 프로그래밍 기초 문법 - 주석, 문자열, 변수 (0) | 2020.03.06 |