
python에서는 리스트를 정렬할 수 있는 sort()와 sorted()라는 함수가 존재한다.
sort()는 원배열 자체를 정렬한다.
오름차순 정렬
- reverse=False가 default다.
arr = [5, 4, 3, 2, 1]
arr.sort()
print(arr) #[1, 2, 3, 4, 5]
reverse=True로 설정하면 된다.arr = [1, 2, 3, 4, 5]
arr.sort(reverse=True)
print(arr) #[5, 4, 3, 2, 1]
sorted()는 원배열은 그대로 두고 정렬된 배열을 반환한다.sort()와 마찬가지로 reverse=True로 설정한다.arr = [5, 3, 4, 2, 1]
#오름차순 정렬
sorted_arr = sorted(arr)
print(sorted_arr) #[1, 2, 3, 4, 5]
print(arr) #[5, 3, 4, 2, 1]
#내림차순 정렬
sorted_arr = sorted(arr, reverse=True)
print(sorted_arr) #[5, 4, 3, 2, 1]
print(arr) #[5, 3, 4, 2, 1]
key 값으로 주면 된다.arr = ['나비야', '나', '이리날아오너라', '비야']
sorted_arr = sorted(arr, key=len)
print(sorted_arr) #['나', '비야', '나비야', '이리날아오너라']
print(arr) #['나비야', '나', '이리날아오너라', '비야']
arr.sort(key=len)
print(arr) #['나', '비야', '나비야', '이리날아오너라']
lambda 함수도 사용할 수 있다.arr = ['key', 'apple', 'green', 'dad']
arr.sort(key=lambda x:x[1])
print(arr) #['dad', 'key', 'apple', 'green']
arr = ['key', 'apple', 'green', 'dad']
sorted_arr = sorted(arr, key=lambda x:x[1], reverse=True)
print(sorted_arr) #['green', 'apple', 'key', 'dad']
print(arr) #['key', 'apple', 'green', 'dad']
arr[0]을 기준으로 정렬하고 값이 같다면 arr[1]번을 기준으로 정렬한다.arr = [(5, 3), (1, 2), (1, 0), (2, 3)]
arr.sort()
print(arr) #[(1, 0), (1, 2), (2, 3), (5, 3)]
key 이용하기arr[1]을 기준으로 정렬arr = [(5, 3), (1, 2), (1, 0), (2, 3)]
arr.sort(key=lambda x:x[1])
print(arr) #[(1, 0), (1, 2), (5, 3), (2, 3)]
arr[1]을 기준으로 내림차순 정렬arr = [(5, 3), (1, 2), (1, 0), (2, 3)]
arr.sort(key=lambda x:-x[1])
print(arr) #[(5, 3), (2, 3), (1, 2), (1, 0)]
arr[1] 값이 같다면 arr[0]을 기준으로 정렬하기arr = [(5, 3), (1, 2), (1, 0), (2, 3)]
arr.sort(key=lambda x:(x[1], x[0]))
print(arr) #[(1, 0), (1, 2), (2, 3), (5, 3)]
이처럼
key값을 이용한다면 원하는 조건으로 리스트를 정렬할 수 있다.