⊙list.sort()
1. 따로 반환하는 값이 없으므로(None) 새로운 변수 선언이 필요 없다.
2. '리스트명.sort()'와 같은 방법으로 작성한다.
3. key parameter가 None으로 설정되어 있으므로, 문자열 리스트를 문자 길이 순으로 정렬하고 싶다면 list.sort(key=len)으로 작성한다.
a = [3, 2, 5, 1, 4]
a.sort()
print(a) #[1, 2, 3, 4, 5]
⊙sorted(list)
1. 기존에 선언된 리스트 원본을 변화시키지 않는다.
2. 순서대로 정렬한 리스트를 반환하므로 새로운 변수를 선언해야 한다.
3. 'newList = sorted(list)'와 같은 방법으로 작성한다.
a = [3, 2, 5, 1, 4]
b = sorted(a)
print(b) #[1, 2, 3, 4, 5]
⊙lambda의 활용
lambda를 이용하면 리스트나 딕셔너리 등을 쉽게 정렬할 수 있다.
① 딕셔너리 정렬
1. 딕셔너리의 items() 메서드를 이용하여 key들을 사전 순으로 정렬할 수 있다.
a = {'A': 3, 'E': 9, 'C': 5, 'B': 1}
print(sorted(a.items())) #[('A', 3), ('B', 1), ('C', 5), ('E', 9)]
2. value를 기준으로 정렬하고 싶다면 lambda를 사용하여 정렬할 수 있다.
a = {'A': 3, 'E': 9, 'C': 5, 'B': 1}
print(sorted(a.items(), key=lambda x: x[1])) #[('B', 1), ('A', 3), ('C', 5), ('E', 9)]
② 리스트 정렬
1. 리스트 안의 원소들에 대해 우리가 원하는 기준에 맞게 정렬할 수 있다.
a = [(1, 2, 3), (6, 4, 5), (6, 3, 5)]
a.sort(key=lambda x: (-int(x[1]), int(x[2]), -int(x[3]), x[0]))
- 두 번째 원소 기준으로 내림차순 정렬
- 두 번째 원소가 같은 경우, 세 번째 원소를 기준으로 오름차순 정렬
- 세 번째 원소가 같은 경우, 네 번째 원소를 기준으로 내림차순 정렬
- 네 번째 원소가 같은 경우, 첫 번째 원소를 기준으로 오름차순 정렬
Counter을 이용한 딕셔너리나 리스트 안의 튜플/리스트를 정렬할 때 요긴하게 쓸 수 있을 것 같다. 필요할 때 꺼내 쓸 수 있게 잘 훈련시켜야겠다.
반응형
'PS(Problem Solving) > ETC' 카테고리의 다른 글
[Codeforces] Codeforces Round #743 (Div. 2) - A) Countdown (C++) 문제 및 풀이 (0) | 2021.09.29 |
---|---|
[Code Jam] 2021 Code Jam 도전! (0) | 2021.03.27 |
[Algorithm] 위상 정렬 - Topology Sort (파이썬, C++) (0) | 2021.03.10 |
댓글