arr.sort([reverse=<True|False>][, key=<function>])
arr.sort()
: arr 직접 수정arr.sort(reverse = True)
sorted(arr[, key=<function>][, reverse=<True|False>])
sorted(arr)
: arr을 변경하는 것이 아니라, 정렬된 새로운 리스트를 반환iterable
에 동작(list, tuple, dict, 문자열(알파벳, 가나다 순) 등등)sorted(arr, reverse = True)
key를 이용하면, 원하는 기준으로 순서대로 정렬 가능하다
1. 문자열의 길이를 기준으로 정렬을 해보자
str_list = ['test', 'te', 'tes', 't']
print(sorted(str_list, key=len))
print(sorted(str_list, reverse=True, key=len))
# 출력결과
['t', 'te', 'tes', 'test']
['test', 'tes', 'te', 't']
option 파라미터는 순서에 상관없이 대입 가능하다
2. 함수를 정의해서 key에 대입을 해보자
각 배열의 원소가 tuple일 때 코드이다
def sort_2(t):
return t[1] # 두번째 인덱스값 리턴
array.sort(key = sort_2) # 두번째 인덱스를 기준으로 정렬
함수를 정의한다면 더 직관적이게 이해할 수 있어서 좋은 듯하다!\
3. lambda식의 조화
key와 lambda식의 조화는 체고인 듯
arr = [(5, 4), (2, 1), (3, 3), (1,3), (1, 2)]
sorted(arr, key = lambda x : x[0])
# [(1, 3), (1, 2), (2, 1), (3, 3), (5, 4)]
sorted(arr, key = lambda x : (-x[1], x[0]))
# [(5, 4), (1, 3), (3, 3), (1, 2), (2, 1)]
두번째 예시를 보면, 람다식에 두개의 인자가 존재한다.
먼저 첫번째 인자를 기준으로 내림차순(-),
그 안에서 다음 두번째 인자를 기준으로 오름차순으로 정렬하게 된다
위의 예시 코드에서 일부러 (3, 3), (1, 3)을 대입했다.
먼저 두번째 인덱스를 이용해 내림차순을 진행한다.
만약 key = lambda x : -x[1]
이었다면, 출력 결과는 (3, 3), (1, 3)
이다.
key = lambda x : (-x[1], x[0])
이기 때문에,
같은 수에 대해 첫번째 인덱스를 기준으로 또 오름차순 정렬을 하게 된다
그렇기 때문에 출력 결과는 (1, 3), (3, 3)
이다.
여기서 내림차순 정렬을 '-'로 간단히 표현할 수 있다는 것이 매우 편한듯하다
다음 포스팅은 배열, 리스트 문법 정리를 해야겠다 🖐🖐