Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python에서 정렬된 리스트 만들기: sort()와 sorted() 활용법

Python 리스트 정렬의 기본 원리

Python에서 리스트를 정렬할 때 sort() 메서드는 해당 클래스에 정의된 __gt__(초과)와 __lt__(미만) 연산자를 사용해 요소들을 서로 비교합니다. 다행히 문자열, 숫자 등 대부분의 내장 클래스에는 이 비교 연산자가 이미 구현되어 있기 때문에, 별도의 설정 없이도 자동으로 정렬된 결과를 얻을 수 있습니다.

실제 사용 예시는 다음과 같습니다.

words = ["Hello", "World", "Foo", "Bar", "Nope"]
numbers = [100, 12, 52, 354, 25]
words.sort()
numbers.sort()

print(words)
print(numbers)

위 코드를 실행하면 아래와 같은 출력 결과를 확인할 수 있습니다.

['Bar', 'Foo', 'Hello', 'Nope', 'World']
[12, 25, 52, 100, 354]

문자열은 알파벳 순서로, 숫자는 오름차순으로 각각 정렬된 것을 볼 수 있습니다.

원본 리스트를 유지하면서 정렬하기: sorted() 함수

sort() 메서드는 원본 리스트 자체를 변경(in-place 정렬)한다는 점에 유의해야 합니다. 만약 원본 리스트는 그대로 두고, 정렬된 새로운 리스트를 따로 만들고 싶다면 내장 함수인 sorted()를 사용하는 것이 좋습니다.

words = ["Hello", "World", "Foo", "Bar", "Nope"]
sorted_words = sorted(words)

print(words)
print(sorted_words)

실행 결과는 다음과 같습니다.

["Hello", "World", "Foo", "Bar", "Nope"]
['Bar', 'Foo', 'Hello', 'Nope', 'World']

출력 결과에서 알 수 있듯이, 원본 리스트 words는 그대로 유지되고 정렬된 결과만 sorted_words라는 새로운 변수에 저장됩니다.

sort()와 sorted()의 차이점 정리

  • list.sort(): 원본 리스트를 직접 수정하며, 반환값은 None입니다.
  • sorted(iterable): 원본 데이터를 변경하지 않고 정렬된 새로운 리스트를 반환합니다.

메모리 사용량이 중요한 상황이라면 sort(), 원본 데이터 보존이 필요하다면 sorted()를 선택하는 것이 바람직합니다.