【问题标题】:How to sort the list based on student's last name using lambda in python? [duplicate]python - 如何在python中使用lambda根据学生的姓氏对列表进行排序? [复制]
【发布时间】:2017-09-19 09:36:44
【问题描述】:

我有一个学生姓名列表

students = ["Merol B Joseph", "Ferzil Babu", "Basil Abraham", "Kiran Baby", "Ziya sofia"]

我正在尝试使用 lambda 表达式对列表进行排序。

我想根据学生的姓氏

对列表进行排序

我只是这样尝试

student_last_name_alpha_order = students.sort(key=lambda name: name.split(" ")[-1].lower())

然后我打印 student_last_name_alpha_order ,但 它返回 None

【问题讨论】:

    标签: python python-2.7 list sorting lambda


    【解决方案1】:

    这是因为sort() 是一种就地排序列表并返回None 的方法。

    students = ["Merol B Joseph", "Ferzil Babu", "Basil Abraham", "Kiran Baby", "Ziya sofia"]
    students.sort(key=lambda name: name.split(" ")[-1].lower())
    print students
    

    将打印:

    ['Basil Abraham', 'Ferzil Babu', 'Kiran Baby', 'Merol B Joseph', 'Ziya sofia']
    

    您可以使用sorted(),它是一个函数返回其输入的排序版本而不更改原始版本:

    students = ["Merol B Joseph", "Ferzil Babu", "Basil Abraham", "Kiran Baby", "Ziya sofia"]
    x = sorted(students, key=lambda name: name.split(" ")[-1].lower())
    print x
    print students
    

    打印:

    ['Basil Abraham', 'Ferzil Babu', 'Kiran Baby', 'Merol B Joseph', 'Ziya sofia']
    ['Merol B Joseph', 'Ferzil Babu', 'Basil Abraham', 'Kiran Baby', 'Ziya sofia']
    

    但这会创建一个新列表,需要两倍的内存量并且需要更长的时间,因为所有内容都需要复制。因此,由您决定是否真的需要这个。就地排序更高效,可能更容易出错。

    【讨论】:

    • :感谢您发布答案,它完美运行。您确实清楚地解释了 sort() 和 sorted()。
    【解决方案2】:

    students.sort 对学生列表进行排序并将排序后的列表返回给学生。 Print students ,它将打印出排序列表。

    【讨论】:

      猜你喜欢
      • 2023-04-03
      • 2014-10-08
      • 1970-01-01
      • 1970-01-01
      • 2021-04-12
      • 1970-01-01
      • 2020-11-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多