파이썬(Python)

[ Basic ] Python(파이썬) sorted 함수

카루루1007 2023. 3. 8. 23:46
728x90
반응형
SMALL

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)

728x90
반응형
LIST