1. 기본개념
파이썬에서 sorted 함수는 이름에서 알 수 있듯이 정렬을 하는 함수입니다.
리스트나 튜플, 문자열 등을 오름차순 또는 내림차순으로 정렬하는데 사용됩니다.
기본 구문은 다음과 같습니다.
sorted(iterable, key=None, reverse=False)
인자 중
[ iterable ] : 정렬하려는 iterable입니다. interable은 반복이 가능한 유형입니다.(보통 튜플, 리스트, 문자열 등)
[ key ] : 호출할 함수입니다.
[ reverse ]는 기본적으로 오름차순(False)으로 정렬하고 True로 정하면 내림차순으로 정렬합니다.
2. 코드 예시
numbers = [4, 2, 7, 1, 3]
sorted_numbers = sorted(numbers)
print(sorted_numbers)
위 코드의 실행결과는 [1, 2, 3, 4, 7]입니다.
key 인자를 정하지 않았고, reverse인자도 정하지 않아
기본적으로 오름차순으로 정렬이 됩니다.
numbers = [4, 2, 7, 1, 3]
sorted_numbers = sorted(numbers, reverse=True)
print(sorted_numbers)
reverse를 [ True ]로 정하면 코드의 결과는 다음과 같이 내림차순으로 정렬됩니다.
[7, 4, 3, 2, 1]
key에 len 함수를 전달하면 문자열의 길이 순서로 정렬해 줍니다.
my_list = ['apple', 'banana', 'pear', 'orange']
sorted_list = sorted(my_list, key=len)
print(sorted_list)
위 코드의 결과는 my_list 안에 있는 각 문자열의 길이 순서대로
오름차순으로 반환합니다.
['pear', 'apple', 'banana', 'orange']
key 인자에는 각 요소에 적용할 수 있는 함수를 받아야 합니다.
문자열도 정렬이 가능합니다.
string = "python"
sorted_string = sorted(string)
print(sorted_string)
위 코드의 결과는 ['h', 'n', 'o', 'p', 't', 'y']입니다.
아래 코드도 한번 살펴보겠습니다.
students = [("길동", 24), ("꺽정", 19), ("철수", 21)]
sorted_students = sorted(students, key=lambda x: x[1])
print(sorted_students)
stuednts는 리스트 형태이며, 그 안에 튜플 형태의 요소를 가지고 있습니다.
대충 튜플이 리스트에 담겨있다라고 보시면 될것 같습니다.
key 값으로 lamda 함수를 전달하였습니다.
x 는 students의 각 요소들 즉 각각의 튜플이 x에 들어갑니다.
x[1]은 튜플의 두번째 요소, 즉 나이가 들어갑니다.
※0이 첫번째이고, 1은 두번째입니다.
결국 위 코드는 리스트의 요소인 튜플을 구성하고 있는 나이에 따라 오름차순으로 정렬하라는 의미입니다.
결과값은 다음과 같습니다.
[('꺽정', 19), ('철수', 21), ('길동', 24)]
딕셔너리도 정렬할 수 있습니다.
my_dict = {'a':10, 'b':50, 'c':30}
sorted_items = sorted(my_dict.items())
print(sorted_items
위 코드의 결과는 [('a', 10), ('b', 50), ('c', 30)] 입니다.
[ 키 ]를 기준으로 정렬된 것을 알 수 있습니다.
만약 값을 기준으로 정렬하고 싶다면,
아래와 같이 코드를 작성할 수 있습니다.
my_dict = {'a':10, 'b':50, 'c':30}
sorted_items = sorted(my_dict.items(), key=lambda x: x[1])
print(sorted_items)
위 코드의 결과는 [('a', 10), ('c', 30), ('b', 50)] 입니다.
3. 마무리
간략하게 sorted 함수에 대해 알아보았습니다.
위 코드를 하나씩 실행해 보시면
sorted 함수에는 튜플, 문자열, 리스트 등
반복이 가능한 객채(interable)을 받는 다는 것을 알 수 있습니다.
하지만 반환되는 값은 모두 리스트 형태인 것을 알 수 있습니다.
한번씩 코드를 다시 실행해 보시면 모두 리스트 형태로 반환되는 것을 확인하실 수 있습니다.
또한 sorted 함수는 원래의 형태를 바꾸지는 않습니다.
tuple = (4, 2, 7, 1, 3)
sorted_tuple = sorted(tuple)
print(f"sorted_tuple : {sorted_tuple}")
print(f"tuple : {tuple}")
위 코드의 결과는 다음과 같습니다.
sorted_tuple : [1, 2, 3, 4, 7]
tuple : (4, 2, 7, 1, 3)
여기를 방문하시면 더 많은 파이썬 관련 자료를 확인할 수 있습니다.
'파이썬(Python)' 카테고리의 다른 글
[ Basic ] 파이썬 if __name__ == "__main__" 구문 (0) | 2023.03.16 |
---|---|
[ Basic ] 파이썬(python) lambda 함수 (0) | 2023.03.09 |
[ Basic ] 파이썬 Dictionary 키와 값의 목록 반환, keys() / values() / items() (0) | 2023.02.27 |
[ Basic ] 파이썬 Dictionary 추가하기, 삭제하기 (0) | 2023.02.26 |
[ Basic ] 파이썬(Python) Dictionary 만들고 수정, 접근하기 (0) | 2023.02.20 |