파이썬으로 프로그래밍을 하거나 코딩테스트 문제를 풀다 보면, 이차원 배열이나 튜플을 정렬 디폴트인 인덱스 0이 아닌, 다른 기준으로 정렬할 일이 자주 있습니다. sort(), sorted() 함수의 'key' 파라미터와 람다함수를 이용한 특수 정렬에 대해서 알아보겠습니다.
- 먼저 이전에 sort(), sorted() 함수의 기본개념에 대해 작성한 포스팅을 첨부합니다.
[Python] 파이썬 정렬 - sorted(), sort() 분석 및 차이점
파이썬에서 정렬을 할 때 'sorted()' 함수와 'sort()' 메서드는 자주 사용되는 도구입니다. 두 방법 모두 비슷하게 작동하지만 주요 차이점이 있습니다. 1. 기본 정보 : 'sorted()' : 내장 함수입니다. 원
hyper7.tistory.com
- 먼저, sort()와 sorted() 모두 'key'를 파라미터로 받습니다.
- key파라미터에 람다함수를 인자로 넘겨 이차원 배열, 튜플, 문자열 등의 이터러블 객체를 원하는 기준으로 정렬할 수 있습니다.
1. sorted() 함수로 특수정렬
- 예시 : sorted_students = sorted(students, key=lambda x: x[1])
- 튜플정렬과 이차원배열 정렬을 예시로 살펴보겠습니다.
'''
튜플정렬
'''
students = [('John', 88), ('Alice', 75), ('Bob', 95), ('Daisy', 68)]
# 오름차순 정렬
sorted_students = sorted(students, key=lambda x: x[1]) # 점수(인덱스 1)를 기준으로 오름차순 정렬
print(sorted_students)
# 출력 [('Daisy', 68), ('Alice', 75), ('John', 88), ('Bob', 95)]
# 내림차순 정렬
sorted_students_desc = sorted(students, key=lambda x: x[1], reverse=True)
print(sorted_students_desc)
# 출력 [('Bob', 95), ('John', 88), ('Alice', 75), ('Daisy', 68)]
'''
이차원 배열 정렬
'''
students = [['John', 88], ['Alice', 75], ['Bob', 95], ['Daisy', 68]]
# 점수(인덱스 1)를 기준으로 오름차순 정렬
sorted_students = sorted(students, key=lambda x: x[1])
print(sorted_students)
# 출력 [['Daisy', 68], ['Alice', 75], ['John', 88], ['Bob', 95]]
# 점수(인덱스 1)를 기준으로 내림차순 정렬
sorted_students_desc = sorted(students, key=lambda x: x[1], reverse=True)
print(sorted_students_desc)
# 출력 [['Bob', 95], ['John', 88], ['Alice', 75], ['Daisy', 68]]
2. .sort() 메서드로 특수 정렬
- 예시: students.sort(key=lambda x: x[1])
- 위와 마찬가지로 튜플정렬과 이차원배열 정렬을 예시로 살펴보겠습니다.
'''
튜플정렬
'''
students = [('John', 88), ('Alice', 75), ('Bob', 95), ('Daisy', 68)]
# 오름차순 정렬
students.sort(key=lambda x: x[1]) # 점수(인덱스 1)를 기준으로 오름차순 정렬
print(students)
# 출력 [('Daisy', 68), ('Alice', 75), ('John', 88), ('Bob', 95)]
# 내림차순 정렬
students.sort(key=lambda x: x[1], reverse=True)
print(students)
# 출력 [('Bob', 95), ('John', 88), ('Alice', 75), ('Daisy', 68)]
'''
이차원 배열 정렬
'''
students = [['John', 88], ['Alice', 75], ['Bob', 95], ['Daisy', 68]]
# 점수(인덱스 1)를 기준으로 오름차순 정렬
students.sort(key=lambda x: x[1])
print(students)
# 출력 [['Daisy', 68], ['Alice', 75], ['John', 88], ['Bob', 95]]
# 점수(인덱스 1)를 기준으로 내림차순 정렬
students.sort(key=lambda x: x[1], reverse=True)
print(students)
# 출력 [['Bob', 95], ['John', 88], ['Alice', 75], ['Daisy', 68]]
'Python' 카테고리의 다른 글
[Python] 파이썬 프로그램 실행 시간 측정 - time 모듈 (0) | 2024.03.26 |
---|---|
[Python] 특정 값이 처음으로 나타나는 인덱스 반환 - index() (0) | 2024.03.09 |
[Python] 문자열 자료형 판별 메서드 - isdigit(), isalpha() (0) | 2024.03.01 |
[Python] in 연산자 (0) | 2024.02.29 |
[Python] Iterable 객체 생성 - 이터레이터 & 제너레이터 (0) | 2024.02.29 |