首頁  >  文章  >  後端開發  >  Python 中的「sorted(key=lambda: ...)」函數如何對列表進行排序?

Python 中的「sorted(key=lambda: ...)」函數如何對列表進行排序?

Patricia Arquette
Patricia Arquette原創
2024-10-26 09:44:29308瀏覽

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

理解排序清單的sorted(key=lambda: ...)`語法

Python中的sorted()函數提供對列表進行排序的簡潔方法。對包含巢狀元素或元組的複雜清單進行排序時,您可以使用 key 參數自訂排序。

Lambda 函數語法

key 參數中的 lambda 函數是匿名函數,指定如何匯出清單中每個元素的排序標準。其語法為:

lambda input_variable(s): expression
  • input_variable(s):要操作的變數。
  • 表達式:要傳回的計算或值。

例如:

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

sorted()中的鍵函數

在sorted()的上下文中,key=lambda指定的鍵函數應用於清單中的每個元素,結果用於確定排序順序。 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>

布林值和排序

當key 函數傳回布林值時,排序基於值的真實性。具有 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>

要使用排序()函數按年齡對學生進行排序,您可以將key 參數與lambda 函數結合使用:

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

這個lambda 函數從每個字典中提取年齡屬性並傳回它,允許根據年齡對元素進行排序。

以上是Python 中的「sorted(key=lambda: ...)」函數如何對列表進行排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn