본문 바로가기
AI Developer/Python

[파이썬] 정렬 함수 (sort VS sorted)

by 성 언 2023. 2. 4.

파이썬 문법학습 후 정리한 포스팅 입니다.

이번 포스팅에서는 파이썬 정렬 함수에 대해 학습합니다.

 

I) sort 함수 

- 리스트.sort() 형식

- 리스트형의 메소드 (리스트의 원본값 수정)

 

 

 

II) sorted 함수

- sorted( 리스트 ) 형식

- 파이썬 내장함수 (리스트의 원본값 수정 X) -> 정렬한 새로운 리스트 반환

 

 

III) Parameter

sort() 와 sorted함수의 옵션은 동일하다.

- key Parameter

  어떤 것을 기준으로 정렬할 것인가? ( ex) [ str, int ] 의 중첩 리스트에서 key 지정해주기 )

- reverse Parameter

   .sort() 함수와 마찬가지로 reverse = False가 오름차순의 Default 값, reverse = True는 내림차순

 

 

 

 

IV) 코드

arr = [10, 21, 22, 42, 52]

arr.sort() # .sort()는 반환값이 없음에 주의!
print(".sort()를 사용한 정렬입니다.", arr)
arr.sort(reverse= True) # .sort()는 반환값이 없음에 주의!
print(".sort()를 사용한 내림차순 정렬입니다.", arr)
--> .sort()를 사용한 정렬입니다. [10, 21, 22, 42, 52]
	.sort()를 사용한 내림차순 정렬입니다. [52, 42, 22, 21, 10]

sorted_arr = sorted(arr)
print("sorted()를 사용한 정렬입니다.", sorted_arr)
sorted_arr = sorted(arr, reverse=True)
print("sorted()를 사용한 내림차순 정렬입니다.", sorted_arr)
--> sorted()를 사용한 정렬입니다. [10, 21, 22, 42, 52]
	sorted()를 사용한 내림차순 정렬입니다. [52, 42, 22, 21, 10]
    
    
    
    
# 중첩 리스트의 정렬 
arr_in_arr = [ [23, 'hello'], [43, 'my'], [64, 'friend']]

arr_in_arr.sort(key = lambda x:x[0])
print(".sort()를 사용한 중첩 리스트 정렬입니다. (key: int)", arr_in_arr)
arr_in_arr.sort(key = lambda x:x[1])
print(".sort()를 사용한 중첩 리스트 정렬입니다. (key: str)", arr_in_arr)
--> .sort()를 사용한 중첩 리스트 정렬입니다. (key: int) [[23, 'hello'], [43, 'my'], [64, 'friend']]
	.sort()를 사용한 중첩 리스트 정렬입니다. (key: str) [[64, 'friend'], [23, 'hello'], [43, 'my']]

sorted_arr_in_arr = sorted(arr_in_arr, key = lambda x:x[0])
print("sordted()를 사용한 중첩 리스트 정렬입니다. (key: int)", sorted_arr_in_arr)
sorted_arr_in_arr = sorted(arr_in_arr, reverse=True, key = lambda x:x[1])
print("sordted()를 사용한 내림차순 정렬입니다. (key: str)", sorted_arr_in_arr)
--> sordte()를 사용한 중첩 리스트 정렬입니다. (key: int) [[23, 'hello'], [43, 'my'], [64, 'friend']]
	sordte()를 사용한 내림차순 정렬입니다. (key: str) [[43, 'my'], [23, 'hello'], [64, 'friend']]

 

 

 

<Summary>

- sort()

- sorted()

 

*유의사항

- 파이썬 문법 공부 중인 인공지능공학과 학부생이 남긴 정리입니다.

- 정확하지 않거나, 틀린 점이 있다면 댓글로 알려주시면 감사하겠습니다.

 

 

 

댓글