안녕하세요. 위기의 코딩맨입니다.
오늘은 python의 리스트 정렬에 대해 알아보도록 하겠습니다.
크게 sort() 방식과 sorted() 방식이 존재하는데 상황에 맞게 사용하시면 됩니다!
가장 큰 차이점은 sort()는 기존 리스트가 바뀌고 리턴 값이 존재하지 않고 sorted()는 기존 리스트는 유지하며 정렬된 값을 리턴받습니다.
또한 리스트.sort()는 리스트 형의 메소드 형식으로 되어있으며, sorted(리스트)는 내장함수 형식입니다.
[ Sort() ]
바로 예제소스를 보도록 하겠습니다.
list_1 = [5,3,6,1]
list_2 = []
list_2 = list_1.sort()
print(list_1)
print(list_2)
해당 소스는 list_1의 값 [5,3,6,1]을 정렬하여 list_2에 넣어주도록 했습니다.
결과는 어떻게 나올까요? 많은 분들이 list_2에 정렬 값이 들어간다고 생각하시겠지만
sort()는 리턴 값이 존재하지 않으므로 list_1만 정렬 되어 저장되고, list_2는 빈 리스트 그대로 출력되는 것을 확인하실 수 있습니다.
[ Sorted() ]
다음은 sorted()에 대해 알아보도록 하겠습니다.
앞에서 말했듯이 sorted()는 리턴 값이 존재하여 꼭 list에 저장해 주어야 합니다.
list_1 = [5,3,6,1]
list_2 = []
list_2 = sorted(list_1)
print(list_1)
print(list_2)
예제 소스를 확인해보시면 기존의 list_1은 변화된게 없고 list_2에 sored() 함수는 정렬된 리턴 값을 반환 하기 때문에
list_2에 저장 된 것을 확인 하실 수 있습니다.
[ 심화 ]
조금 더 심화 학습으로 sorted(), sort() 를 이용한 많은 정렬 방식이 존재합니다.
첫번째로 reverse를 이용하여 내림차순, 오름차순을 결졍하는 방법이 있습니다.
reverse= True는 내림차순, False는 오름차순으로 결정됩니다.
list_1.sort(reverse= True)
list_2 = sorted(list_1,reverse= True)
사용법은 정렬 하실 때, 이런 식으로 사용하시면 됩니다.
다음은 key를 이용하는 방법입니다.
key는 하나의 파라미터 값을 받고, 정렬을 목적으로한 key를 리턴 받습니다.
이 예제는 프로그래머스의 문자열 내마음대로 정렬하기 문제로 예를 들어보겠습니다.
문제를 이해해보면 [ABC ,CAB], 1 이면 B와 A 값으로 정렬하여 리스트 순서를 [CAB, ABC] 로 정렬하는 문제입니다.
list_ = ["sun", "bed", "car"]
N = 1
def solution(strings, n):
list_ = sorted(sorted(strings), key=lambda x: x[n])
return list_
문제가 많이 복잡해 보이지만 sotred()를 이용하면 간단합니다.
먼저 list_를 기본으로 정렬을 진행 해주고 이유는 문자열이 같을경우, 사전순으로 정렬하기 위해서 입니다.
다음으로 key의 lambda로 x에 리스트 하나의 값을 넣는데 x[n]으로 n번째 자리 수에 있는 값을 정렬의 기준으로 설정해 주도록 합니다.
그럼 그 값을 기준으로 정렬하게 되어, 원하는 값을 얻게 됩니다.
오늘은 python의 sort(), sorted()에 대해 알아보았습니다.
더 들어가 프로그래머스의 문자열 내마음대로 정렬이라는 코딩테스트 문제도 함께 풀어보았습니다.
하나하나 알아가는 재미를 배워보도록 합시다.
'Python > Algorithm' 카테고리의 다른 글
[We-Co] DFS, BFS - Python (0) | 2022.02.15 |
---|---|
[We-Co] 최대 공약수 , 최소 공배수 - Python (0) | 2022.02.15 |
[We-Co] 퀵정렬 (Quick sort) (0) | 2021.07.31 |
[We-Co] 람다 lambda (0) | 2021.07.30 |
[We-Co] 리스트 선택정렬 (0) | 2021.07.28 |