파이썬에서 정렬 기능을 가진 함수는 크게 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)도 가능하고, 별도로 함수를 만들어 사용해도 된다.

 

- 비교할 아이템의 요소가 여러개일 경우, 튜플로 순서를 묶어 사용한다. ( - 를 붙이면, 반대로 정렬을 한다.)

반응형

+ Recent posts