본문 바로가기
카테고리 없음

[Python] 정렬 문법 정리(sort, sorted, reverse, 길이순 정렬, 2차원 리스트 정렬)

by heaven00 2021. 4. 26.
728x90

 

 

 

나중에 내가 보려고 적는 기초 문법 정리

 

 


 

sort와 sorted함수의 차이점

sort(): 이 메소드는 리스트를 정렬된 상태로 변경.

sorted(): 기존의 리스트를 변경하는 것이 아니라 정렬된 새로운 리스트를 반환한다.

+sort 정렬의 기본값은 오름차순

+sorted는 새로운 배열을 만들었다는 점 빼고 모두 sort와 동일. 따라서 뒤에서는 sorted로만 예시를 들었지만, sort로도 동일하게 사용 가능

 

 

 

 

 

<sort정렬>

 

a = [4,5,1,2,8]
a.sort()
print(a)

#출력값 = [1, 2, 4, 5, 8]

리스트 a를 숫자 순서대로 정렬해서 반환

 

<sort정렬을 이용한 역순(내림차순)으로 정렬>

a = [4,5,1,2,8]
a.sort(reverse = True)
print(a)
    
#출력값 = [8, 5, 4, 2, 1]

reverse라는 파라미터를 사용하면, 역순으로 정렬 가능. (= 내림차순으로 정렬 가능)

 

<sorted정렬>

a = [4,5,1,2,8]
b = sorted(a)
print(b)
    
#출력값 = [1, 2, 4, 5, 8]

a 리스트를 변경하는 것이 아니라 정렬된 새로운 리스트를 b를 반환

출력값은 sort와 같이 순서대로 정렬

 

<sorted정렬(한글)>

a = ['거울', '초콜릿', '향수', '쿠션', '오렌지', '다람쥐']

b = sorted(a)
print(b)

#출력값 = ['거울', '다람쥐', '오렌지', '초콜릿', '쿠션', '향수']

한글 순서대로 정렬

 

 

<sorted정렬(영어)>

a = ['hello', 'hi', 'goodbye' ,'nice', 'to','meet', 'you' ]
b= sorted(a)
print(b)

#출력값 = ['goodbye', 'hello', 'hi', 'meet', 'nice', 'to', 'you']

알파벳 순서대로 정렬

 

<문자 길이 순으로 정렬>

a = ['hello', 'hi', 'goodbye' ,'nice', 'to','meet', 'you' ]
b= sorted(a, key = len)
print(b)
    
#출력값 = ['hi', 'to', 'you', 'nice', 'meet', 'hello', 'goodbye'

key 매개변수에 len을 넣어서, 길이 순으로 정렬

 

<2차원 리스트일 때, sorted 정렬>

=> 점이 두개라면 좌표를 x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증가하는 순서로 정렬

방법1

a = [[1, 2], [0, 1], [5, 1], [5, 2], [3, 0],[4,6]]
b = sorted(a)
print(b)
    
#출력값 = [[0, 1], [1, 2], [3, 0], [4, 6], [5, 1], [5, 2]]

 

 

방법2

a = [[1, 2], [0, 1], [5, 1], [5, 2], [3, 0],[4,6]]

b = sorted(a, key = lambda x : x[0])
print(b)
    
#출력값 = [[0, 1], [1, 2], [3, 0], [4, 6], [5, 1], [5, 2]]

 

 

 

 

=> 점이 두개라면 좌표를 y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순서로 정렬

a = [[1, 2], [0, 1], [5, 1], [5, 2], [3, 0],[4,6]]

b = sorted(a, key = lambda x : x[1])
print(b)
    
#출력값 = [[3, 0], [0, 1], [5, 1], [1, 2], [5, 2], [4, 6]]

 

 

 

 

 

<문자 + 숫자 정렬 (튜플 사용)>

=> 앞의 문자를 알파벳 순으로 정렬. 만약 같다면, 숫자순으로 정렬

a = [('hello', 3),
     ('hello', 0),
     ('apple', 4),
     ('python', 1),
     ('mouse', 1)]
b = sorted(a, key = lambda x : (x[0], x[1]))
print(b)
    

#출력값 = [('apple', 4), ('hello', 0), ('hello', 3), ('mouse', 1), ('python', 1)]

 

 

 

 

=> 뒤의 숫자를 숫자 순으로 정렬. 만약 같다면, 문자의 알파벳 순으로 정렬.

a = [('hello', 3),
     ('hello', 0),
     ('apple', 4),
     ('python', 1),
     ('mouse', 1)]
b = sorted(a, key = lambda x : (x[1], x[0]))
print(b)
    
#출력값 = [('hello', 0), ('mouse', 1), ('python', 1), ('hello', 3), ('apple', 4)
728x90

댓글