Python 中的'sorted(key=lambda: ...)”函数如何对列表进行排序?

Patricia Arquette
发布: 2024-10-26 09:44:29
原创
307 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!