본문 바로가기
Python/Algorithm

[We-Co] Python 리스트 sort(), sorted()

by 위기의코딩맨 2021. 8. 3.
반응형

안녕하세요. 위기의 코딩맨입니다.

오늘은 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(reverseTrue

list_2 = sorted(list_1,reverseTrue)

 

 

사용법은 정렬 하실 때, 이런 식으로 사용하시면 됩니다. 

다음은 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