CodeGym /행동 /Python SELF KO /리스트 정렬

리스트 정렬

Python SELF KO
레벨 7 , 레슨 8
사용 가능

8.1 리스트 정렬

Python에서 리스트 정렬은 데이터를 분석하거나 표현하기 위해 데이터를 정리하는 중요한 작업이야. Python은 리스트를 정렬하는 여러 가지 방법을 제공하고, 각각의 방법은 문제와 필요에 따라 유용할 수 있어.

sort() 메소드

sort() 메소드는 리스트를 제자리에서 정렬해, 즉 원래 리스트를 변경하지. 이 메소드는 매우 효율적이며, 인자를 통해 정렬을 설정할 수 있어.


numbers = [5, 2, 9, 1]
numbers.sort()
print(numbers)  # 출력: [1, 2, 5, 9] 

reverse=True 파라미터를 설정해서 리스트를 역순으로 정렬할 수도 있어.


numbers = [5, 2, 9, 1]
numbers.sort(reverse=True)
print(numbers)  # 출력: [9, 5, 2, 1]

sorted() 함수

sorted() 함수는 원본 리스트는 그대로 두고 정렬된 새 리스트를 만들어 줘. 원본 데이터를 변경하지 않고 유지해야 할 때 sorted()가 종종 선호되는 선택이야.


numbers = [5, 2, 9, 1]
sorted_numbers = sorted(numbers)
print(sorted_numbers)  # 출력: [1, 2, 5, 9]
print(numbers)  # 원본 리스트는 변하지 않음 [5, 2, 9, 1]

sort()는 원본 리스트를 변경하고, sorted()는 원본을 변경하지 않고 새로운 정렬된 리스트를 반환하는 것을 기억하는 것이 중요해. 데이터를 제자리에서 변경해야 하면 sort()를 사용하고, 원본 데이터의 순서를 유지해야 하면 sorted()를 사용해.

8.2 키를 통한 정렬

때로는 복잡한 정렬 시나리오나 일부 매개변수를 무시한 정렬이 필요할 때가 있어. 이 경우 "키를 통한 정렬"이 필요해. 이를 위해 sort() 메소드나 sorted() 함수에 key라는 특별한 파라미터를 전달해야 해.

key 파라미터의 값으로는 요소 비교에 사용할 함수를 전달해야 해.

대소문자를 구분하지 않고 문자열 비교하기

비교하기 전에 모든 문자열을 소문자로 변환해


alist = ["banana", "Orange", "Kiwi", "cherry"]
alist.sort(key=str.lower)
print(alist)  # 출력: ['banana', 'cherry', 'Kiwi', 'Orange']

튜플 리스트 정렬 예제

예를 들어, 학생들의 리스트가 있고, 각 요소가 학생 이름과 점수를 포함하는 (tuple)이라면, 학생들을 점수에 따라 정렬하고 싶을 때:


students = [('Alice', 88), ('Bob', 75), ('Carol', 96)]

def get_grade(student):
    return student[1]
            
students.sort(key=get_grade)
print(students)  # 출력: [('Bob', 75), ('Alice', 88), ('Carol', 96)]

딕셔너리 리스트 정렬 예제

또는 학생들에 대한 정보를 포함하는 딕셔너리 리스트가 있을 경우, 점수에 따라 정렬하려면 다음과 같은 코드를 작성해야 해:


students = [
    {'name': 'Alice', 'grade': 88},
    {'name': 'Bob', 'grade': 75},
    {'name': 'Carol', 'grade': 96}
]
        
def get_grade(student):
    return student['grade']
        
sorted_students = sorted(students, key=get_grade)
print(sorted_students)  # 출력: [{'name': 'Bob', 'grade': 75}, {'name': 'Alice', 'grade': 88}, {'name': 'Carol', 'grade': 96}]
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION