파이썬에서는 튜플을 원소로 하는 리스트가 있을 때, 그 리스트를 정렬하면 기본적으로 각 튜플을 구성하는 원소의 순서에 맞게 정렬된다는 특징이 있다.
예를 들어 튜플이 3개의 원소로 구성된다면 모든 원소가 첫 번째 원소의 순서에 맞게 정렬되고, 첫번째 원소의 값이 같은 경우 두 번째 원소의 순서에 맞게 정렬되고, 거기에 두 번째 원소의 값까지 같은 경우 세 번째 원소의 순서에 맞게 정렬된다. 아래의 소스코드를 보자.
소스코드
a = [(5, 1, 5), (3, 5, 5), (3, 1, 9), (3, 1, 1)]
a.sort()
print(a)
결과
[(3, 1, 1), (3, 1, 9), (3, 5, 5), (5, 1, 5)]
또한 리스트의 원소를 정렬할 때는 sort() 함수의 key 속성에 값을 대입하여 내가 원하는 '조건'에 맞게 튜플을 정렬시킬 수 있다. 예를 들어 다음과 같은 코드가 있다고 하자.
A.sort(key = lambda x: (-int(x[1]), int(x[2]), -int(x[3]), x[0]))
위 코드의 의미는 다음과 같다.
- 두 번째 원소를 기준으로 내림차순 정렬
- 두 번째 원소가 같은 경우, 세 번째 원소를 기준으로 오름차순 정렬
- 세 번째 원소가 같은 경우, 네 번째 원소를 기준으로 내림차순 정렬
- 네 번째 원소가 같은 경우, 첫 번째 원소를 기준으로 오름차순 정렬
따라서 파이썬에서의 sort() 함수를 적절히 이용하면, 짧은 코드로 조건을 만족하는 방향으로 리스트 내 원소들을 정렬시킬 수 있다.
'Algorithm > Python' 카테고리의 다른 글
[Python] 대소문자 변환 함수 4가지 (0) | 2023.09.17 |
---|---|
[Python] join 함수 (0) | 2023.09.17 |
[Python] 람다(Lambda) 표현식 (0) | 2023.07.31 |
[Python] 알파벳 순서대로 정렬하기 (0) | 2023.07.19 |
[Python] ImportError: No module named '_curses' 에러 (0) | 2023.07.19 |