[Python] 파이썬 리스트 오름차순, 내림차순 정렬 정리(sort, sorted, lambda)

권경환·2023년 12월 9일
0

python

목록 보기
11/14
post-thumbnail

파이썬을 이용하여 특정 자료형의 데이터를 정렬하고 싶을때 함수를 사용하여 나타낼 수 있습니다.
오늘은 정렬함수들에는 어떤것들이 있고 사용하는 방법에 대해서 정리해보도록 하겠습니다~

파이썬 정렬함수

파이썬의 정렬함수들은 기본적으로 문자형이라면 사전순으로 정렬하며, 정수형이라면 크기순으로 정렬합니다.

1. sort()

기본적으로 제공되는 내장함수 중 하나이며 괄호안에 오름차순, 내림차순으로 정렬할 수 있습니다.

  • 사용방법은 <리스트>.sort(key=<함수>,revsere=<bool>)
    <리스트>.sort() 매개변수(괄호) 안에 값을 넣지 않으면 기본적으로 reverse=False 오름차순 정렬입니다.
  • 기존 데이터를 변경하는 방식으로 반환합니다.

아래는 문자형을 오름차순으로 정렬하고 정수형은 내림차순으로 정렬하는 방법입니다.

list = ["d", "c", "a", "b"]
list.sort()
print(list) # ['a', 'b', 'c', 'd']

list = [3, 2, 1, 4]
list.sort(reverse=True)	# 내림차순 정렬
print(list) # [4, 3, 2, 1]

2. sorted()

sorted내장함수 중 하나이며 첫번째에 소개해드린 sort 함수에 매개변수는 동일하지만 특징이 있습니다.

  • 사용방법은 sorted(<리스트>,key=<함수>,revsere=<bool>) 입니다.
    리스트 이후에 key, reverse 값을 넣지 않으면 기본적으로 reverse=False 오름차순 정렬입니다.
  • 새로운 리스트를 반환합니다
    sort의 경우 기존에 선언한 리스트를 변경하는 형식이지만 sorted는 새로운 리스트를 반환하며 기존 리스트를 변경하지 않습니다.

아래는 기본적인 오름차순 정렬방법입니다.

list = ["d", "c", "a", "b"]
sorted_list = sorted(list)
print(sorted_list) # ['a', 'b', 'c', 'd']

아래는 문자열의 길이순으로 내림차순 정렬하는 방법입니다.
key 값을 이용하면 특정조건을 기준으로 정렬할 수 있습니다.

list = ["aa", "bbb", "c", "dddd"]
sorted_list = sorted(list,key=len,reverse=True)	# 문자열의 길이순으로 내림차순 정렬
print(sorted_list) # ['dddd', 'bbb', 'aa', 'c']

3. lambda

sortsorted를 사용하여 정렬할때 key 옵션에다가 lambda표현식을 병행해서 사용하여 정렬하면 특정조건을 만들어 줄 수 있습니다.

  • 사용방법은 lambda 매개변수 : 표현식 입니다.

key = lambda x:x[딕셔너리 키], reverse=<bool> 형식으로 매개변수의 키 값을 사용하여 기준을 잡고
오름차순 또는 내림차순으로 정렬할 수 있습니다.

dic = [
{'name':'kwon1', 'age':27},
{'name':'kwon3', 'age':29},
{'name':'kwon2', 'age':30}
]
# 딕셔너리의 name 키 값을 기준으로 내림차순 정렬
sorted_dic = sorted(dic, key = lambda x:x['name'], reverse=True) 
print(sorted_dic) 

#[{'name': 'kwon3', 'age': 29},
#{'name': 'kwon2', 'age': 30},
#{'name': 'kwon1', 'age': 27}]

아래는 2차원 배열 형태를 정렬하는 방법이며, 2차원 배열형태에서는 행(배열의 0번째값) 또는 열(배열의 1번째값) 기준으로 정렬할 수 있습니다.
오름차순 때는 옆과 같이 사용하며key = lambda x:x[1]
내림차순 때는 마이너스를 사용하여 key = lambda x:-x[1] 나타낼 수 있습니다.
행 또는 열 기준으로 정렬하다보면 동일한 값이 있을때 다중조건을 사용하여 key = lambda x:(-x[1], x[0])
나타낼 수 있습니다.

list = [[1,2], [3,1], [2,3]]
# 2차원 배열의 1번째 값(열)을 기준으로 오름차순 정렬
sorted_list = sorted(list,key=lambda x:x[1])	
print(sorted_list) # [[3, 1], [1, 2], [2, 3]]

list = [[1,2], [3,1], [2,3]]
# 2차원 배열의 1번째 값(열)을 기준으로 내림차순 정렬
sorted_list = sorted(list,key=lambda x:-x[1])	
print(sorted_list) # [[2, 3], [1, 2], [3, 1]]

list = [[1,2], [3,1], [2,3],[2,2],[3,2]]
# 2차원 배열의 1번째 값(열)을 기준으로 내림차순 정렬하다가
# 같은 값이 있다면 배열의 0번째 값이 오름차순으로 정렬
sorted_list = sorted(list,key=lambda x:(-x[1], x[0]))	
print(sorted_list) # [[2, 3], [1, 2], [2, 2], [3, 2], [3, 1]]
profile
성장을 좋아하는 주니어 개발자의 블로그

0개의 댓글