파이썬에서 목록을 정렬하는 방법
게시 됨: 2022-03-30이 기사에서는 Python에서 목록을 정렬하는 방법을 설명합니다.
Python에서는 sort() 메서드를 사용하여 목록을 제자리에 정렬할 수 있습니다. 또는 내장된 sorted() 함수를 사용하여 목록의 정렬된 복사본을 얻을 수 있습니다.
이 자습서에서는 다음을 배우게 됩니다.
-
sort()
메서드와sorted()
함수의 구문 - 목록을 오름차순 및 내림차순으로 정렬하는 코드 예제
-
key
매개변수를 사용하여 정렬 사용자 정의 -
sort()
대sorted()
의 차이점
시작하자!
Python sort() 메서드의 구문
sort()
메서드는 Python 목록에서 작동합니다. 그리고 목록을 제자리에 정렬하고 원래 목록을 수정합니다.
Python의 sort()
메서드 구문은 다음과 같습니다.
<list>.sort(reverse = True | False, key = <func>)
이제 위의 구문을 구문 분석해 보겠습니다.
-
<list>
는 유효한 Python 목록 객체입니다. -
reverse
는 True 또는 False를 취하는 선택적 매개변수입니다. -
reverse
의 기본값은False
이며 목록은 오름차순으로 정렬됩니다. 목록을 내림차순으로 정렬하려면True
를 지정하십시오. -
key
는<func>
로 설정된 선택적 매개변수이기도 합니다. -
<func>
는 내장 함수 또는 사용자 정의 함수일 수 있습니다.
다음 섹션에서는 간단한 예제 코딩을 시작합니다.
오름차순으로 Python 목록을 정렬하는 방법
목록 nums
를 고려하십시오. 목록을 오름차순으로 정렬하려면 목록에서 sort()
메서드를 호출하면 됩니다.
다음 코드 조각을 실행합니다.
nums = [25,13,6,17,9] nums.sort() print(nums) # Output: [6, 9, 13, 17, 25]
목록 nums
는 오름차순으로 정렬되었으며 원래 목록이 수정되었습니다. 이를 내부 정렬 이라고 합니다.
내림차순으로 Python 목록을 정렬하는 방법
목록을 내림차순으로 정렬하려면 아래와 같이 reverse
를 True
로 설정하십시오.
nums = [25,13,6,17,9] nums.sort(reverse = True) print(nums) # Output: [25, 17, 13, 9, 6]
이제 목록이 내림차순으로 정렬된 것을 볼 수 있습니다.
Python sort() 메서드와 함께 키를 사용하는 방법
이 섹션에서는 key
매개변수를 사용하고 정렬을 사용자 지정해 보겠습니다.
여기서 mod5()
는 숫자 x
를 받아 x
를 5로 나눈 나머지를 반환하는 함수입니다.
def mod5(x): return x % 5
그리고 우리는 위의 기능을 key
사용하고 싶습니다.
이제 다음 코드 셀을 실행합니다.
nums = [25,13,6,17,9] nums.sort(key = mod5) print(nums) # Output: [25, 6, 17, 13, 9]
잠시 시간을 내어 출력을 구문 분석하십시오.
일반 정렬 대신 mod5
라는 key
에 따라 정렬을 사용자 정의하는 방법에 주목하십시오.
- 이제 5로 나눌 때 최소 나머지를 남기는 숫자가 먼저 옵니다.
- 그리고 5로 나눌 때 가장 큰 나머지를 남기는 숫자가 정렬된 목록의 마지막 요소입니다.
이 경우를 확인하려면 다음 코드 스니펫을 실행하십시오.
nums = [25,13,6,17,9] for num in nums: print(f"{num} leaves remainder {num%5} when divided by 5") # Output 25 leaves remainder 0 when divided by 5 13 leaves remainder 3 when divided by 5 6 leaves remainder 1 when divided by 5 17 leaves remainder 2 when divided by 5 9 leaves remainder 4 when divided by 5
5는 25를 정확히 나누고 나머지는 0입니다. 정렬된 목록의 첫 번째 요소입니다. 6은 나머지 1을 남기므로 두 번째 요소가 되는 식입니다. 9는 5로 나눌 때 나머지 4를 남기고 정렬된 목록의 마지막 요소입니다.
별도의 함수를 정의하는 대신 람다 함수를 사용할 수도 있습니다. Python에서 람다는 한 줄로 된 익명 함수입니다. lambda args:expression 은 args 에서 계산된 표현식 을 반환합니다.
이제 아래와 같이 람다 식을 사용하여 위의 정렬을 다시 작성해 보겠습니다.
nums = [25,13,6,17,9] nums.sort(key = lambda x:x%5) print(nums) # Output: [25, 6, 17, 13, 9]
지금까지 숫자 목록을 정렬하는 방법을 배웠습니다. 다음으로 Python에서 문자열 목록을 정렬하는 방법을 살펴보겠습니다.
알파벳 순서로 Python 목록을 정렬하는 방법
이 섹션에서는 Harry Potter에서 영감을 받은 예제와 함께 문자열 목록을 정렬하는 방법을 배웁니다.
이 예에서 Students는 Hogwarts의 students
목록입니다. 그리고 우리는 그것들을 이름의 알파벳 순서로 정렬하고 싶습니다.
문자열 목록을 정렬할 때 기본 정렬은 알파벳순입니다.
students = ["Harry","Ron","Hermione","Draco","Cedric"]
정렬 결과를 확인하기 위해 정렬된 리스트를 출력해보자.
students.sort() print(students) # Output ['Cedric','Draco', 'Harry', 'Hermione', 'Ron']
알파벳 역순으로 Python 목록을 정렬하는 방법
목록을 알파벳 역순으로 정렬하려면 아래 코드 조각과 같이 reverse
= True
를 설정하십시오.
students.sort(reverse = True) print(students) # Output ['Ron', 'Hermione', 'Harry', 'Draco', 'Cedric']
출력에서 목록이 실제로 역순으로 정렬되었음을 알 수 있습니다.
키 매개변수 사용 방법 사용자 정의 정렬
이 섹션에서는 선택적 key
매개변수를 사용하여 정렬을 사용자 정의해 보겠습니다.
다음 목록인 houses
을 고려하십시오.
houses = [ {1:"Draco","house":"Slytherin"}, {2:"Harry","house":"Gryffindor"}, {3:"Cedric","house":"Hufflepuff"} ]
여기서 houses
는 사전의 목록입니다. 각 사전에는 두 개의 키-값 쌍이 포함되어 있습니다. 하나는 학생의 이름을 나타내고 다른 하나는 학생이 속한 집을 나타냅니다.
이제 우리는 이 목록 주택 을 그들이 속한 주택의 알파벳순 으로 정렬하고 싶습니다.
지금쯤 짐작하셨겠지만 key
매개변수를 특정 학생의 집으로 설정해야 합니다.
각 학생의 집을 검색하기 위해 아래와 같이 returnHouse()
함수를 정의할 수 있습니다.
def returnHouse(student): return student['house']
이 함수는 특정 학생이 속한 집을 반환합니다.
이제 표시된 대로 주택 목록에서 sort()
메서드를 호출할 수 있습니다.
houses.sort(key=returnHouse)
아래 출력에서 목록이 학생 이름이 아닌 집별로 정렬되는 방식을 확인하십시오. 그래서 알파벳 순으로 그리핀도르, 후플푸프, 슬리데린을 가지고 있습니다.
print(houses) # Output [{2: 'Harry', 'house': 'Gryffindor'}, {3: 'Cedric', 'house': 'Hufflepuff'}, {1: 'Draco', 'house': 'Slytherin'}]
그에 따라 key
매개변수를 정의하기 위해 람다 함수를 사용할 수도 있습니다. 모든 목록 항목에 대해 이 함수는 해당 목록 항목의 집을 반환합니다.
다음 코드 셀을 실행하여 이를 확인하십시오.
houses.sort(key=lambda student:student["house"]) print(houses) # Output [{2: 'Harry', 'house': 'Gryffindor'}, {3: 'Cedric', 'house': 'Hufflepuff'}, {1: 'Draco', 'house': 'Slytherin'}]
지금까지의 모든 예제에서는 목록에 대해 sort()
메서드를 사용했습니다. 이제 원래 목록이 수정된다는 것을 알게 되었습니다.
원래 목록을 그대로 유지하지만 목록의 정렬된 복사본을 얻으려면 어떻게 해야 합니까?
글쎄요, 파이썬에서는 이것을 하기 위해 sorted()
함수를 사용할 수 있습니다.
Python sorted() 함수의 구문
sorted()
함수는 목록이나 컬렉션을 인수로 받습니다. 그리고 목록의 정렬된 복사본을 반환하며 원본 목록은 수정되지 않습니다.
Python의 sorted()
함수 구문은 다음과 같습니다.
<sorted_copy> = sorted(<list>, reverse = True | False, key = <func>)
구문이 앞에서 본 sort()
메서드와 매우 유사합니다.
-
<list>
는 유효한 Python 목록 객체이며 필수 매개변수입니다. -
reverse
및key
는 선택적 매개변수입니다.
참고 : 목록에서만 작동하는
sort()
메서드와 달리sorted()
함수는 목록, 문자열 및 사전과 같은 Python 이터러블을 정렬하는 데 사용할 수 있습니다.
sorted() 함수를 사용하여 Python 목록을 정렬하는 방법
#1. 이 예에서 nums
는 숫자 목록입니다.
인수로 nums
를 사용하여 sorted()
함수를 호출할 수 있습니다. 그리고 이것을 sorted_nums1
목록에 할당합니다.
nums = [25,13,6,17,9] sorted_nums1 = sorted(nums) print(sorted_nums1) # Output: [6, 9, 13, 17, 25]
위의 출력에서 nums
가 기본적으로 오름차순으로 정렬되었음을 알 수 있습니다.
또한 sorted()
가 새 목록을 반환하기 때문에 원래 목록 nums
는 수정되지 않습니다. 이것은 아래에서 확인됩니다.
print(nums) # Output: [25, 13, 6, 17, 9]
#2 . 이제 선택적 매개변수 reverse
를 True
로 설정하고 sorted_nums2
를 가져옵니다.
아래 코드 셀에서 볼 수 있듯이 sorted_nums2
는 항목이 내림차순으로 정렬된 새 목록입니다.
sorted_nums2 = sorted(nums,reverse = True) print(sorted_nums2) # Output: [25, 17, 13, 9, 6]
#삼. 이 예에서는 문자열 목록으로 작업해 보겠습니다.
이전 예제와 마찬가지로 sorted()
함수를 호출하면 새 목록이 반환됩니다. 그리고 항목은 알파벳 순서로 정렬됩니다.
fruits = ['pears','strawberry','apple','pineapple','blueberry'] sorted_fr1 = sorted(fruits) print(sorted_fr1) # Output: ['apple', 'blueberry', 'pears', 'pineapple', 'strawberry']
#4. 이제 선택적 key
매개변수를 사용하여 정렬을 사용자 정의해 보겠습니다. key
를 len
으로 설정합니다. 이렇게 하면 문자열의 길이에 따라 목록이 정렬됩니다.
참고: Python에서 내장
len()
함수는 목록, 문자열, 튜플 등과 같은 반복 가능한 모든 것을 취합니다. 그리고 iterable의 길이를 반환합니다.
길이가 가장 짧은 문자열이 정렬된 목록에서 먼저 나타나고 가장 긴 문자열이 정렬된 목록의 끝에 나타납니다.
fruits = ['pear','strawberry','apple','pineapple','blueberry'] sorted_fr2 = sorted(fruits,key=len) print(sorted_fr2) # Output: ['pear', 'apple', 'pineapple', 'blueberry', 'strawberry']
위의 출력에서 배 는 가장 짧은 끈이고 딸기 는 가장 긴 끈입니다.
Python sort() 메서드 대 sorted() 함수
지금까지 sort()
메서드와 sorted()
함수를 사용하는 방법을 배웠습니다. 이 섹션에서는 이 두 가지 방법의 차이점을 열거해 보겠습니다.
파이썬 .sort() 메서드 | 파이썬 sorted() 함수 |
목록을 제자리에 정렬 - 원래 목록을 수정합니다. | 새로운 정렬된 목록을 반환합니다. |
Python 목록에서만 작동 | 목록, 문자열 및 기타 컬렉션과 같은 Python iterable과 함께 작동합니다. |
반환 유형이 None | iterable의 정렬된 복사본을 반환합니다. |
합산
이 Python 목록 자습서가 도움이 되었기를 바랍니다.
우리가 다룬 내용을 빠르게 요약해 보겠습니다.
- list.sort(reverse = True | False, key = <func>) 를 선택적인 reverse 및 key 매개변수와 함께 사용하여 목록을 제자리에 정렬합니다.
- sorted(list, reverse = True | False, key = <func>) 를 사용하여 목록의 정렬된 복사본을 가져옵니다.
이제 Python 목록을 정렬하는 방법을 배웠으므로 Python의 목록 이해에 대해 알아봅니다. 또는 Python에서 파일을 처리하거나 JSON 파일로 작업하는 방법을 배울 수도 있습니다.
Geekflare Online Python Compiler에서 위에 제공된 예제를 시도해 볼 수 있습니다.