Python的内置函数sorted()
在 Python 中,sorted()
函数是一个非常实用且灵活的工具,用于对可迭代对象进行排序。它不仅可以进行简单的升序或降序排序,还可以根据自定义规则进行复杂排序,并且不会改变原始数据。下面我们来详细了解 sorted()
的用法、参数和实际应用。
1. sorted()
函数的基本用法
sorted()
函数用于对任何可迭代对象(如列表、元组、字符串、字典等)进行排序,并返回一个新的排好序的列表。
语法
sorted(iterable, key=None, reverse=False)
iterable
:要排序的可迭代对象,如列表、元组、字符串等。key
:一个函数,用于指定排序的依据。如果没有指定,默认按照元素本身进行排序。reverse
:一个布尔值。如果为True
,则结果将按降序排序;如果为False
(默认值),则按升序排序。
2. 示例和用法
示例 1:对数字列表进行排序
numbers = [5, 2, 9, 1, 5, 6]
sorted_numbers = sorted(numbers)
print(sorted_numbers) # 输出: [1, 2, 5, 5, 6, 9]
示例 2:对字符串列表进行字母排序
words = ["banana", "apple", "cherry"]
sorted_words = sorted(words)
print(sorted_words) # 输出: ['apple', 'banana', 'cherry']
示例 3:降序排序
numbers = [5, 2, 9, 1, 5, 6]
sorted_numbers = sorted(numbers, reverse=True)
print(sorted_numbers) # 输出: [9, 6, 5, 5, 2, 1]
3. 使用 key
参数进行自定义排序
key
参数允许指定一个函数,用于对元素进行排序。这个函数可以是内置函数,也可以是自定义的匿名函数(lambda
)。
示例 4:按字符串长度排序
words = ["banana", "apple", "cherry", "date"]
sorted_words = sorted(words, key=len)
print(sorted_words) # 输出: ['date', 'apple', 'banana', 'cherry']
示例 5:对包含元组的列表按第二个元素排序
students = [("John", 20), ("Jane", 22), ("Dave", 21)]
sorted_students = sorted(students, key=lambda student: student[1])
print(sorted_students) # 输出: [('John', 20), ('Dave', 21), ('Jane', 22)]
4. 实际应用示例
示例 6:忽略大小写进行字符串排序
words = ["banana", "Apple", "cherry", "date"]
sorted_words = sorted(words, key=lambda s: s.lower())
print(sorted_words) # 输出: ['Apple', 'banana', 'cherry', 'date']
示例 7:对字典列表按特定键排序
students = [
{"name": "John", "age": 20},
{"name": "Jane", "age": 22},
{"name": "Dave", "age": 21}
]
sorted_students = sorted(students, key=lambda x: x["age"])
print(sorted_students)
# 输出: [{'name': 'John', 'age': 20}, {'name': 'Dave', 'age': 21}, {'name': 'Jane', 'age': 22}]
5. sorted()
和 sort()
的区别
sorted()
是一个内置函数,返回一个新的排好序的列表,不会修改原始数据。list.sort()
是列表的方法,它对列表本身进行就地排序,不会返回新列表。
示例 8:sorted()
与 list.sort()
的区别
numbers = [5, 2, 9, 1, 5, 6]
# 使用 sorted(),不改变原列表
sorted_numbers = sorted(numbers)
print(sorted_numbers) # 输出: [1, 2, 5, 5, 6, 9]
print(numbers) # 输出: [5, 2, 9, 1, 5, 6]
# 使用 list.sort(),原列表被改变
numbers.sort()
print(numbers) # 输出: [1, 2, 5, 5, 6, 9]
6. 小结
sorted()
是一个非常灵活和强大的函数,它不仅可以用于简单的升序或降序排序,还可以根据自定义的规则进行复杂的排序。通过使用 key
参数,可以对任何可迭代对象进行排序,同时不会影响原始数据。如果你需要对数据进行排序但不想改变原始数据,sorted()
是一个非常合适的选择。
License:
CC BY 4.0