We-Co

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

Python/Algorithm

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

위기의코딩맨 2021. 8. 3. 22:08
반응형

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

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