파이썬 리스트 정렬 방법 이해하기
리스트 데이터 구조는 파이썬 프로그래밍에서 매우 유용하게 사용되는 요소입니다. 그러나 리스트를 효과적으로 다루기 위해서는 정렬 기능을 제대로 활용하는 것이 중요합니다. 본 포스트에서는 파이썬에서 제공하는 두 가지 리스트 정렬 방법인 sort()
와 sorted()
에 대해 알아보겠습니다.

sort()와 sorted()의 차이점
파이썬에서 리스트를 정렬할 때 주로 사용되는 두 가지 방법이 있습니다. 첫 번째는 sort()
메소드이고, 두 번째는 sorted()
함수입니다. 이 두 가지는 비슷한 기능을 하지만 몇 가지 중요한 차이점이 있습니다.
- sort(): 리스트 객체의 메소드로, 해당 리스트를 정렬된 형태로 변경합니다. 즉, 원본 리스트 자체가 수정됩니다.
- sorted(): 모든 이터러블 객체를 입력으로 받아 새로운 정렬된 리스트를 반환합니다. 이 경우, 원본 리스트는 그대로 유지됩니다.
따라서 리스트를 변경하고 싶지 않다면 sorted()
를 사용하는 것이 더 안전합니다.
기본 정렬 방식
파이썬의 기본 정렬 방식은 오름차순입니다. 이를 통해 숫자와 문자를 쉽게 정렬할 수 있습니다. 예를 들어, 숫자 리스트를 오름차순으로 정렬할 때는 다음과 같이 코드를 작성할 수 있습니다.
numbers = [3, 1, 4, 1, 5, 9, 2]
numbers.sort()
print(numbers) # 출력: [1, 1, 2, 3, 4, 5, 9]
문자열 리스트도 동일하게 오름차순으로 정렬할 수 있습니다.
letters = ['d', 'a', 'c', 'b']
letters.sort()
print(letters) # 출력: ['a', 'b', 'c', 'd']
내림차순 정렬
리스트를 내림차순으로 정렬하고 싶다면, sort()
메소드와 sorted()
함수 모두 reverse
매개변수를 사용하면 됩니다. reverse=True
로 설정하면 내림차순으로 정렬됩니다.
numbers.sort(reverse=True)
print(numbers) # 출력: [9, 5, 4, 3, 2, 1, 1]
고급 정렬: key 매개변수 활용하기
리스트를 기본적으로 정렬하는 것을 넘어서, 사용자 정의 기준으로 정렬하고 싶을 때는 key
매개변수를 활용할 수 있습니다. 이 매개변수는 정렬될 각 요소에 적용하여 정렬 기준을 설정할 수 있는 함수를 받습니다.
예를 들어, 문자열의 길이순으로 정렬할 수 있습니다.
words = ['banana', 'apple', 'kiwi', 'grape']
words.sort(key=len)
print(words) # 출력: ['kiwi', 'apple', 'grape', 'banana']
또한 절대값을 기준으로 숫자를 정렬할 수도 있습니다.
numbers = [-5, 3, -2, 7, 1]
numbers.sort(key=abs)
print(numbers) # 출력: [1, -2, 3, -5, 7]

리스트 내의 튜플 정렬
리스트 안에 튜플이 있는 경우 특정 인덱스를 기준으로 정렬할 수 있습니다. 예를 들어 학생의 점수에 따라 정렬하려면 다음과 같이 작성할 수 있습니다.
students = [('Alice', 85), ('Bob', 75), ('Charlie', 90)]
students.sort(key=lambda x: x[1])
print(students) # 출력: [('Bob', 75), ('Alice', 85), ('Charlie', 90)]
리스트의 특정 항목 찾기
정렬된 리스트를 다루다 보면, 특정 항목의 위치를 찾거나 존재 유무를 체크하고 싶을 때가 있습니다. 이때는 index()
메소드를 사용하여 해당 항목의 인덱스를 반환받을 수 있습니다.
fruits = ['apple', 'banana', 'cherry']
index_of_banana = fruits.index('banana')
print(index_of_banana) # 출력: 1
리스트가 특정 요소를 포함하고 있는지 확인하고 싶다면 in
키워드를 사용할 수 있습니다.
if 'apple' in fruits:
print("사과가 리스트에 있습니다.")

마무리하며
리스트의 정렬은 파이썬을 사용할 때 필수적으로 알아두어야 하는 기능 중 하나입니다. sort()
와 sorted()
두 가지 방법을 통해 오름차순, 내림차순, 또는 특정 기준에 따라 다양한 방식으로 정렬할 수 있습니다. 이러한 기능을 효과적으로 사용하여, 데이터 처리 및 분석의 효율성을 높일 수 있습니다.
자주 찾는 질문 Q&A
sort()와 sorted()의 차이는 무엇인가요?
sort()는 리스트를 직접 수정하여 정렬하는 메소드이고, sorted()는 새로운 정렬된 리스트를 반환하여 원본은 그대로 유지합니다.
리스트를 내림차순으로 정렬하려면 어떻게 해야 하나요?
sort() 또는 sorted()에 reverse=True 인자를 주면 리스트가 내림차순으로 정렬됩니다.
특정 기준으로 리스트를 정렬할 수 있나요?
네, key 매개변수를 사용하여 각 요소에 대해 정렬 기준을 설정하면 다양한 방식으로 정렬할 수 있습니다.
리스트 안의 튜플을 정렬하는 방법은?
리스트의 정렬 기준으로 원하는 튜플의 인덱스를 지정하면 됩니다. 예를 들어 학생 점수에 따라 정렬할 수 있습니다.
리스트에 특정 항목이 있는지 확인하는 방법은?
in 키워드를 사용해 리스트에 특정 요소의 존재 여부를 손쉽게 확인할 수 있습니다.