返回

Python列表排序秘籍:list.sort方法和sorted函数精解

后端

数据排序艺术:使用 Python 中的 list.sort() 和 sorted()

在数据分析和编程中,数据排序是一种至关重要的技术,可用于整理、筛选和分析数据。Python 提供了广泛的数据排序选项,包括 list.sort() 方法和 sorted() 函数。在这篇文章中,我们将深入探讨这些排序工具及其在 Python 中的应用。

list.sort() 方法:原列表排序

list.sort() 方法直接对原列表进行排序,不需要创建新的列表对象。其语法格式为:

list.sort(key=None, reverse=False)
  • key: 可选排序键函数,用于自定义排序规则。
  • reverse: 布尔值,指示是否按降序排列。

示例:

# 对数字列表升序排序
lst = [9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]
lst.sort()
print(lst)

输出:

[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

sorted() 函数:创建新列表排序

sorted() 函数返回一个新的已排序列表,而不会修改原列表。其语法格式为:

sorted(iterable, key=None, reverse=False)
  • iterable: 可迭代对象,如列表、元组、字符串等。
  • key: 可选排序键函数,用于自定义排序规则。
  • reverse: 布尔值,指示是否按降序排列。

示例:

# 按年龄升序排序字典列表
students = [{'name': 'Tom', 'age': 18, 'gender': 'male'},
           {'name': 'Lily', 'age': 19, 'gender': 'female'},
           {'name': 'Jack', 'age': 20, 'gender': 'male'}]
sorted_students = sorted(students, key=lambda x: x['age'])
print(sorted_students)

输出:

[{‘name’: ‘Tom’, ‘age’: 18, ‘gender’: ‘male’}, {‘name’: ‘Lily’, ‘age’: 19, ‘gender’: ‘female’}, {‘name’: ‘Jack’, ‘age’: 20, ‘gender’: ‘male’}]

总结与应用

list.sort() 方法和 sorted() 函数是 Python 中常用的列表排序工具,它们具有不同的特点和应用场景。list.sort() 方法直接对原列表进行排序,适合快速对列表进行排序;而 sorted() 函数则创建一个新的已排序列表,适合对列表进行排序并保持原列表不变。

在实际应用中,我们可以根据具体需求选择合适的方法:

  • 如果需要对原列表进行排序,则可以使用 list.sort() 方法。
  • 如果需要创建一个新的已排序列表,而不需要修改原列表,则可以使用 sorted() 函数。
  • 如果需要对复杂数据结构(如字典或对象)进行排序,则可以使用 sorted() 函数和 lambda 表达式定义自定义排序键函数。

常见问题解答

1. 如何对列表中的字符串按字母顺序排序?

lst = ['apple', 'banana', 'cherry', 'dog', 'elephant']
lst.sort()
print(lst)

2. 如何按字典中的特定键对字典列表进行排序?

students = [{'name': 'Tom', 'age': 18},
           {'name': 'Lily', 'age': 19},
           {'name': 'Jack', 'age': 20}]
sorted_students = sorted(students, key=lambda x: x['age'])
print(sorted_students)

3. 如何对嵌套列表进行排序?

lst = [['apple', 1], ['banana', 2], ['cherry', 3]]
lst.sort(key=lambda x: x[1])
print(lst)

4. 如何对列表中包含 None 值的元素进行排序?

使用 sorted() 函数并指定 key=lambda x: x or 0 来将 None 值视为 0。

lst = [1, 2, 3, None, 5]
lst.sort(key=lambda x: x or 0)
print(lst)

5. 如何自定义排序规则?

使用排序键函数。例如,要按字符串长度对列表中的字符串进行排序,可以使用以下键函数:

def str_len(s):
    return len(s)

lst = ['apple', 'banana', 'cherry', 'dog', 'elephant']
lst.sort(key=str_len)
print(lst)