[Python] 파이썬 리스트(list) 원소 정렬 / 역정렬(sort, reverse) 방법

파이썬에서는 다양한 내장함수들을 제공하고 있습니다. 파이썬에서 제공하는 리스트의 요소를 정렬하거나 역정렬하는 것도 파이썬에서 제공하는 내장함수들을 사용하면 편리하게 할 수 있는데요. 알고리즘 문제를 풀 때도 유용하게 사용하는 방법이니 이번 포스팅에서 리스트를 정렬하는 방법에 대해 알아보도록 하겠습니다.

 

 파이썬 리스트 원소 정렬하는 방법 

sort() 메서드 사용

ex_list = [3, 1, 4, 1, 5, 9, 2, 6]
ex_list.sort()  # 오름차순으로 정렬
print(ex_list)  # [1, 1, 2, 3, 4, 5, 6, 9]

파이썬의 리스트를 오름차순으로 정렬하고 싶다면 sort() 메서드를 사용합니다. 위와 같이 뒤죽박죽의 값을 가지고 있던 리스트가 오름차순으로 정렬된 것을 보실 수 있습니다. 

 

sorted() 메서드 사용

ex_list = [3, 1, 4, 1, 5, 9, 2, 6]
new_list = sorted(ex_list)  # 오름차순으로 정렬한 새 리스트 반환
print(new_list)  # [1, 1, 2, 3, 4, 5, 6, 9]

리스트 자체를 정렬시키는 것이 sort() 함수였다면 sorted() 함수는 오름차순으로 정렬한 새로운 리스트를 만들어서 반환합니다. 참고로 sorted() 함수는 새로운 리스트를 만들어서 반환하기 때문에 sort() 함수보다는 조금 느리다고 합니다.

 


 

 key 매개변수 활용 하여 정렬 

파이썬에서 리스트를 정렬할 때 sort() 함수를 사용할 수 있습니다. 이 함수는 기본적으로 리스트의 요소를 오름차순으로 정렬합니다. 하지만 리스트의 특정한 특성에 따라 정렬하고 싶을 때가 있습니다. 이때 sort() 함수의 key 매개변수를 활용하여 정렬 기준을 지정할 수 있습니다. 

 

문자열 길이에 따라 정렬하기

words = ['apple', 'banana', 'cherry', 'date']
words.sort(key=len)  # 문자열 길이를 기준으로 정렬
print(words)  # ['date', 'apple', 'banana', 'cherry']

key 매개변수는 정렬을 수행하기 전에 각 요소에 적용되는 함수를 받습니다. 이 함수의 반환값을 기준으로 리스트가 정렬됩니다. 예를 들어, 문자열의 길이에 따라 정렬하고 싶다면 위와 같이 할 수 있습니다.

 

끝글자 기준으로 정렬하기

words = ["apple", "banana", "cherry", "date", "elderberry"]
words.sort(key=lambda x: x[-1])  # 끝 글자를 기준으로 정렬
print(words)

위의 예제는 정렬할 때 문자열의 끝 글자를 기준으로 정렬하는 예제입니다. 이와 같이 커스텀 정렬 기준을 사용하려면, key 함수를 직접 작성하여 원하는 값을 반환하도록 하면 됩니다. 정렬을 목적으로 하는 함수를 값으로 넣으면 key 값을 기준으로 정렬되고 lambda를 사용할 수 있습니다.

 


 

 파이썬 리스트 원소 역정렬하는 방법 

sort() 함수의 reverse 매개변수 사용

ex_list = [3, 1, 4, 1, 5, 9, 2, 6]
ex_list.sort(reverse=True)  # 리스트를 내림차순으로 정렬
print(ex_list)  # [9, 6, 5, 4, 3, 2, 1, 1]

sort() 함수에는 reverse 옵션이 존재합니다. 디폴트값이 reverse=False이기 때문에 사용하지 않으면 기본적으로 리스트가 오름차순으로 정렬되지만 위의 예제처럼 reverse=True로 작성해 주면 리스트를 내림차순으로 정렬할 수 있습니다.

 

sorted() 함수의 reverse 매개변수 사용

ex_list = [3, 1, 4, 1, 5, 9, 2, 6]
new_list = sorted(ex_list, reverse=True)  # 내림차순으로 정렬한 새 리스트 반환
print(new_list)  # [9, 6, 5, 4, 3, 2, 1, 1]

마찬가지로 sorted() 함수에서도 위의 예제처럼 reverse=True로 작성해 주면 리스트를 내림차순으로 정렬하여 반환할 수 있습니다.

댓글

Designed by JB FACTORY