정렬
✔ list.sort() - 오름차순으로 정렬
list = [3, 4, 2, 1, 5]
list.sort()
print(list)
출력 결과
[1, 2, 3, 4, 5]
✔ list.sort(reverse = True) - 내림차순으로 정렬
list = [3, 4, 2, 1, 5]
list.sort(reverse=True)
print(list)
출력 결과
[5, 4, 3, 2, 1]
✔ sorted(list) - 오름차순으로 정렬
list = [3, 4, 2, 1, 5]
print(sorted(list))
출력 결과
[1, 2, 3, 4, 5]
✔ sorted(list, reverse = True) - 내림차순으로 정렬
list = ['A', 'B', 'C', 'D', 'E']
print(sorted(list, reverse=True))
출력 결과
['E', 'D', 'C', 'B', 'A']
📌 sort와 sorted의 차이점
- sort는 리스트 자료형의 메소드로 원본값을 직접 수정
- sorted는 파이썬의 내장 함수로 정렬한 복사본 반환
list = [3, 1, 5, 2, 4]
print(list.sort())
print(sorted(list))
출력결과
None #list.sort() 결과
[1, 2, 3, 4, 5] #sorted(list) 결과
- 위 결과를 보면 sort는 정렬한 결과값을 반환하지 않지만, sorted는 정렬한 결과값을 반환해준다.
다중 정렬
✔ list.sort(key = lambda x:x[index]) / sorted(list, ley = lambda x:x[index])
- 이중 리스트에서 index를 기준으로 오름차순 정렬
list = [('B',3),('A', 1), ('C', 5), ('E', 2), ('D', 4)]
list.sort(key=lambda x:x[0])
print(list)
출력 결과
[('A', 1), ('B', 3), ('C', 5), ('D', 4), ('E', 2)]
- 첫 번째 index인 문자를 기준으로만 정렬된 것을 볼 수 있다.
✔ list.sort(key = lambda x:-x[index]) / sorted(list, ley = lambda x:-x[index])
- 이중 리스트에서 index를 기준으로 내림차순 정렬
list = [('B',3),('A', 1), ('C', 5), ('E', 2), ('D', 4)]
print(sorted(list, key=lambda x:-x[1]))
[('C', 5), ('D', 4), ('B', 3), ('E', 2), ('A', 1)]
- 두 번째 인덱스인 숫자를 기준으로 내림차순 정렬된 것을 볼 수 있다.
- 주의할 것은 내림차순 정렬 시 str 타입인 것은 안 되고 숫자인 것만 된다.
- 아래는 오류 예시이다.
오류 예시
list = [('B',3),('A', 1), ('C', 5), ('E', 2), ('D', 4)]
print(sorted(list, key=lambda x:-x[0]))
오류
TypeError: bad operand type for unary -: 'str'
✔ list.sort(key = lambda x:(x[index1, x[index2])) / sorted(list, key = lambda x:(x[index1], x[index2]))
- 첫 번째 인자를 기준으로 먼저 오름차순 정렬, 두 번째 인자를 기준으로 오름차순 정렬
list = [('B',3),('A', 1), ('C', 5), ('E', 2), ('D', 4)]
print(sorted(list, key=lambda x:(x[1], x[0])))
출력 결과
[('A', 1), ('E', 2), ('B', 3), ('D', 4), ('C', 5)]
- 첫 번째는 오름차순, 두 번째는 내림차순으로 정렬하고 싶다면 '-x[0]'라고 하면 된다.
✔ sort/sorted(list, key = lambda x:x[index1], reverse = True))
- 인덱스를 기준으로 오름차순 정렬 후, 그 리스트를 내림차순으로 정렬
list = [('B',3),('A', 1), ('C', 5), ('E', 2), ('D', 4)]
print(sorted(list, key=lambda x:x[0]))
print(sorted(list, key=lambda x:x[0], reverse=True))
출력 결과
[('A', 1), ('B', 3), ('C', 5), ('D', 4), ('E', 2)] #reverse 안 했을 때
[('E', 2), ('D', 4), ('C', 5), ('B', 3), ('A', 1)] #reverse 했을 때
'알고리즘' 카테고리의 다른 글
[Java] Math 클래스 주요 메서드 (0) | 2024.09.30 |
---|---|
[Java] String 클래스 주요 메서드 (0) | 2024.09.29 |
[알고리즘] DP (Dynamic Programming, 동적 계획법) (0) | 2023.09.25 |
[알고리즘] 에라토스테네스의 체 (1) | 2023.09.23 |
[알고리즘] BFS/DFS 알고리즘 (그래프 탐색) (0) | 2023.05.15 |