>백엔드 개발 >파이썬 튜토리얼 >Python에서 목록 정렬을 위해 `sorted(key=lambda: ...)` 함수는 어떻게 작동합니까?

Python에서 목록 정렬을 위해 `sorted(key=lambda: ...)` 함수는 어떻게 작동합니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-26 09:44:29418검색

How does the `sorted(key=lambda: ...)` function work for sorting lists in Python?

목록 정렬을 위한 sorted(key=lambda: ...)` 구문 이해

Python의 sorted() 함수는 다음을 제공합니다. 목록을 정렬하는 간결한 방법. 중첩된 요소나 튜플이 포함된 복잡한 목록을 정렬할 때 키 인수를 사용하여 정렬을 사용자 정의할 수 있습니다.

Lambda 함수 구문

키 인수의 람다 함수는 목록의 각 요소에 대한 정렬 기준을 도출하는 방법을 지정하는 익명 함수입니다. 구문은 다음과 같습니다.

lambda input_variable(s): expression
  • input_variable(s): 연산할 변수.
  • expression: 반환할 계산 또는 값.

예:

<code class="python">f = lambda x: x + 1
f(10)  # Returns 11</code>

sorted()의 키 함수

sorted()의 컨텍스트에서 key=lambda로 지정된 키 함수 목록의 각 요소에 적용되며 결과는 정렬 순서를 결정하는 데 사용됩니다. 람다 함수에서 반환된 값은 정렬을 위한 대용 값 역할을 합니다.

이 메커니즘을 사용하면 요소 자체가 아닌 각 요소의 특정 속성이나 특성을 기반으로 원본 목록을 정렬할 수 있습니다. 예를 들어 두 번째 요소를 기준으로 튜플 목록을 정렬할 수 있습니다.

<code class="python">mylist = [(3, 5, 8), (6, 2, 8), (2, 9, 4), (6, 8, 5)]
sorted(mylist, key=lambda x: x[1])

# Output: [(6, 2, 8), (3, 5, 8), (6, 8, 5), (2, 9, 4)]
# Sorted by the second element of each tuple</code>

부울 값 및 정렬

키 함수가 부울 값을 반환하면 정렬은 값의 진실성을 기반으로 합니다. True 값을 가진 요소는 False 값을 가진 요소 앞에 배치됩니다. 그러나 동일한 진실 값을 가진 요소의 원래 순서는 유지됩니다.

<code class="python">mylist = [3, 6, 3, 2, 4, 8, 23]
sorted(mylist, key=lambda x: x % 2 == 0)

# Output: [3, 3, 23, 6, 2, 4, 8]
# Odd numbers (False) come before even numbers (True)
# Even numbers remain in their original order</code>

복잡한 데이터 구조에 키 사용

키 기능은 다음과 같습니다. 특정 속성을 추출하고 비교하기 위해 복잡한 데이터 구조와 함께 사용됩니다. 예를 들어 학생을 나타내는 사전 목록을 생각해 보세요.

<code class="python">students = [
    {'name': 'John', 'age': 20},
    {'name': 'Alice', 'age': 22},
    {'name': 'Bob', 'age': 18},
]</code>

sorted() 함수를 사용하여 학생을 연령별로 정렬하려면 람다 함수와 함께 키 인수를 사용할 수 있습니다.

<code class="python">sorted(students, key=lambda x: x['age'])</code>

이 람다 함수는 각 사전에서 age 속성을 추출하여 반환하므로 요소를 나이를 기준으로 정렬할 수 있습니다.

위 내용은 Python에서 목록 정렬을 위해 `sorted(key=lambda: ...)` 함수는 어떻게 작동합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.