【问题标题】:Using sorted() in Python [duplicate]在 Python 中使用 sorted() [重复]
【发布时间】:2012-10-09 02:06:34
【问题描述】:

可能重复:
Syntax behind sorted(key=lambda :)

我正在浏览documentation 并遇到了这个例子:

> student_tuples = [
      ('john', 'A', 15),
      ('jane', 'B', 12),
      ('dave', 'B', 10), ]

> sorted(student_tuples, key=lambda student: student[2])  # sort by age 
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]

我不明白这里的 lambda 和 student 是什么?它们可以用任何其他名称代替吗? :student:student[2] 中做了什么?这有点模棱两可,因为我以前从未遇到过。

【问题讨论】:

    标签: python


    【解决方案1】:

    在语义上,这个:

    print sorted(student_tuples, key=lambda student: student[2])
    

    和这个是一样的:

    def sort_key(student):
        return student[2]
    
    print sorted(student_tuples, key=sort_key)
    

    lambda 只是为函数定义提供了另一种语法。结果是一个函数对象,就像def 创建的对象一样。但是,lambda 函数不能做某些事情——比如定义新变量。它们非常适合创建小型的一次性功能,例如这个。

    一旦你理解了这一点,那么你只需要知道key 接受一个函数,在传递给sorted 的序列中的每个值上调用它,并根据它们对应的@987654328 的顺序对这些值进行排序@ 值如果它们自己被排序的话会被取走。

    【讨论】:

      【解决方案2】:

      lambda是定义函数inline的一种方式,冒号:之前的部分是函数的参数;在这种情况下,它被称为student。在本例中,该函数只是返回传递给它的列表或元组的第三部分,即年龄。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-03-05
        • 2012-06-12
        • 1970-01-01
        • 1970-01-01
        • 2018-07-22
        • 2013-06-17
        • 1970-01-01
        相关资源
        最近更新 更多