티스토리 뷰

728x90

기본적으로 sort() 함수와 sorted()함수는 오름차순으로 정렬해줍니다.

이 전 포스팅에 언급했듯이 역순(내림차순)으로 배열할 경우 reverse 옵션을 True로 주면 됐었습니다.

코딩 특히 알고리즘을 풀다보면 여러 기준으로 정렬을 해야될 경우가 있기에 이에 대해 정리해보고자 합니다.

이 때는 key 옵션에 람다식으로 기준옵션을 주면 손쉽게 해결할 수 있습니다.

 

1) 길이를 기준으로 정렬

list.sort(key=lambda x : len(x))

sorted(list, key=lambda x : len(x))

 

2) 여러 차원의 배열일 경우 원하는 조건으로 정렬

list.sort(key=lambda x: x[0]) #첫번째 인자를 기준으로 정렬

sorted(list, key=lambda x: -x[1]) #두번째 인자를 기준으로 역순 정렬

 

3) 첫 정렬이후 두번째 정렬 조건을 사용해 정렬

list.sort(key=lambda x: (x[0], x[1])) #첫인자로 정렬 이후 두번째 인자로 정렬

sorted(list, key=lambda x: (x[1], -x[0])) #두번째 인자로 정렬 후 첫번째 인자로 역순 정렬

여러가지 정렬 조건을 사용할 경우 튜플로 묶어서 순서를 정해주면 됩니다.

또한 서로 다른 정렬 조건일 경우 -를 붙여서 내림차순 정렬이 가능합니다.

참고로 lambda식이 아니고 따로 정의한 함수를 사용해도 가능합니다 :)  (저는 아직까지는 따로 정의해야될 만큼 복잡한 정렬을 요구하는 문제는 안 풀어 봤어요.)

728x90
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함