데이터를 정렬하는 것은 Python에서 작업할 때 가장 일반적인 작업 중 하나입니다. 예를 들어 팀 구성원 목록을 이름별로 정렬하거나 프로젝트 목록을 우선순위 순으로 정렬할 수 있습니다.
이 문서에서는 Python 에서 목록을 정렬하는 방법에 대해 설명합니다.
Python sort() 및 sorted()
파이썬에서는 내장 list.sort() 메소드 또는 내장 정렬() 함수를 사용하여 목록을 정렬할 수 있습니다.
sorted() 함수는 정렬된 목록을 새로 만들고 list.sort() 메서드는 목록을 제자리에 정렬합니다. 보관할 경우 정렬되지 않은 목록은 정렬된() 함수를 사용합니다. 또 다른 차이점은 정렬된 함수가 반복 가능한 객체에 대해 작동한다는 것입니다.
sort() 및 sorted()의 구문은 다음과 같습니다.
list.sort(key=function, reverse=Boolean)
sorted(iterable, key=function, reverse=Boolean)
선택적 키워드 인수 키와 역방향은 다음과 같은 의미를 갖습니다.
키 - 하나의 인수를 가져다가 비교 전에 변환하는 함수입니다. 함수는 정렬 비교에 사용되는 값 하나를 반환해야 합니다.
역방향 - 역방향 값은 참 또는 거짓일 수 있습니다. 기본값은 True입니다. 이 인수를 false로 설정하면 목록이 역순으로 정렬됩니다.
목록의 요소는 "미만"(<) 연산자를 사용하여 비교되고 오름차순으로 정렬됩니다. <> 연산자는 문자열을 정수에 비교하는 것을 지원하지 않으므로 문자열과 정수를 포함하는 목록이 있으면 정렬 작업이 실패합니다.
다음 예에서는 문자열 목록을 알파벳 순으로 정렬하는 방법을 보여 줍니다.
directions = ["north", "east", "south", "west"]
directions.sort()
print('Sorted list:', directions)
# Sorted list: ['east', 'north', 'south', 'west']
원래 목록을 변경하지 않고 유지하려면 sorted() 함수를 사용합니다.
directions = ["north", "east", "south", "west"]
sorted_directions = sorted(directions)
print('Sorted list:', sorted_directions)
# Sorted list: ['east', 'north', 'south', 'west']
목록을 역방향(내림차순)으로 정렬하려면 역방향 인수를 참으로 설정합니다.
directions = ["north", "east", "south", "west"]
directions.sort(reverse=True)
print('Sorted list:', directions)
# Sorted list: ['west', 'south', 'north', 'east']
함수를 사용하여 정렬
키 인수를 사용하면 함수를 사용할 수 있으므로 더 복잡한 정렬 작업을 수행할 수 있습니다.
가장 간단한 예는 요소를 길이에 따라 정렬하는 것입니다.
directions = ["Arya", "Daenerys", "Jon", "Brienne"]
directions.sort(key=len)
print('Sorted list:', directions)
# Sorted list: ['Jon', 'Arya', 'Brienne', 'Daenerys']
비교기로 사용되는 문자열의 문자 수를 반환하기 위해 len() 함수를 사용하고 있습니다.
사용자 정의 함수를 만들어 비교를 위한 주요 인수로 사용할 수도 있습니다. 다음은 숫자의 합에 따라 정수 목록을 정렬하는 방법을 보여주는 예입니다.
def sum_digits(num):
digits = [int(x) for x in str(num)]
return sum(digits)
numbers = [23, 77, 19, 310, 219]
numbers.sort(reverse=True, key=sum_digits)
print('Sorted list:', numbers)
# Sorted list: [77, 219, 19, 23, 310]
다른 예로는 키 인수를 사용하여 튜플 리스트와 같은 복잡한 리스트를 정렬할 수 있습니다.
numbers = [(3, 14), (1, 61), (2, 71)]
numbers.sort(key=lambda k: k[0])
print('Sorted list:', numbers)
# Sorted list: [(1, 61), (2, 71), (3, 14)]
Copy
튜플의 첫 번째 요소를 반환하는 익명(램다) 함수를 사용하고 있습니다. 목록은 함수에서 반환된 값을 기준으로 정렬됩니다.
사전 목록을 정렬하는 데도 동일한 방법을 사용할 수 있습니다.
람다 함수는 비교에 사용되는 이름 키의 값을 반환합니다.
복잡한 기능을 보다 빠르고 효율적으로 정렬할 수 있는 방법은 연산자 모듈 기능을 사용하는 것입니다. 다음은 예입니다.
elements = [
{'name': 'Germanium', 'number': 25, 'symbol': 'ge'},
{'name': 'Silver', 'number': 47, 'symbol': 'ag'},
{'name': 'Iron', 'number': 26, 'symbol': 'fe'},
]
elements.sort(key=lambda k: k['name'])
print('Sorted list:', elements)
# Sorted list: [
# {'name': 'Germanium', 'number': 25, 'symbol': 'ge'},
# {'name': 'Iron', 'number': 26, 'symbol': 'fe'},
# {'name': 'Silver', 'number': 47, 'symbol': 'ag'}
# ]
Itemgetter 함수는 키 기호 값을 가져옵니다.
from operator import itemgetter
elements = [
{'name': 'Germanium', 'number': 25, 'symbol': 'ge'},
{'name': 'Silver', 'number': 47, 'symbol': 'ag'},
{'name': 'Iron', 'number': 26, 'symbol': 'fe'},
]
elements.sort(key=itemgetter('symbol'))
print('Sorted list:', elements)
# Sorted list: [
# {'name': 'Silver', 'number': 47, 'symbol': 'ag'},
# {'name': 'Iron', 'number': 26, 'symbol': 'fe'},
# {'name': 'Germanium', 'number': 25, 'symbol': 'ge'}
# ]
Python에서 sort() 메소드와 sorted() 함수를 사용하여 목록을 정렬하는 방법을 보여드렸습니다.
참조
https://linuxize.com/post/python-list-sort/
'SW > Python' 카테고리의 다른 글
Python : Modulo Operator : 나머지 연산자 사용 방법, 예제, 명령어 (0) | 2022.10.15 |
---|---|
Python : List에 Element 추가 방법 : append, extend, insert (0) | 2022.10.11 |
python : range() 함수 사용 방법, 예제, 명령어 (0) | 2022.07.17 |
Python : while Loop : 사용 방법, 예제, 개념 (0) | 2022.07.10 |
Python : if..else 문 사용 방법, 예제, 명령어 (0) | 2022.07.02 |