sorted()
是 Python 中的一个内置函数,用于对可迭代对象进行排序。这意味着它可以用来排序列表、元组、字典(基于键)以及其他可迭代的对象。
sorted()
函数返回一个新的、排序后的列表,原始输入对象不会被修改(即它是不可变的)。下面是一些关于
sorted()
函数的基本用法和高级特性的详细讲解。
基本用法
sorted(iterable, /, *, key=None, reverse=False)
iterable
: 需要排序的可迭代对象。key
: 如果需要按照指定的方式进行排序,可以传递一个带有单个参数的函数,此函数将被用于从迭代中的每个元素中提取比较的键 (默认为 None)。reverse
: 如果设置为True
,则列表元素将以降序被排列,默认为False
(升序)。
示例
基础排序
# 对列表进行升序排序
my_list = [3, 1, 4, 1, 5, 9, 2]
print(sorted(my_list))
# 输出:[1, 1, 2, 3, 4, 5, 9]
使用 reverse
参数
# 对列表进行降序排序
print(sorted(my_list, reverse=True))
# 输出:[9, 5, 4, 3, 2, 1, 1]
使用 key
参数
# 按字符串长度排序
words = ['banana', 'pie', 'Washington', 'book']
print(sorted(words, key=len))
# 输出:['pie', 'book', 'banana', 'Washington']
对字典进行排序
虽然 sorted()
本身不能直接排序字典,但你可以用它来基于字典的键或值进行排序。
# 基于键排序
my_dict = {'a': 3, 'b': 1, 'c': 2}
print(sorted(my_dict))
# 输出:['a', 'b', 'c']
# 基于值排序
print(sorted(my_dict.items(), key=lambda item: item[1]))
# 输出:[('b', 1), ('c', 2), ('a', 3)]
高级用法
sorted()
的 key
参数非常强大,因为你可以传递一个自定义函数来控制排序逻辑。例如,你可以基于对象的某个属性或者更复杂的数据结构中的值来排序。
注意事项
sorted()
返回的是一个新列表,原列表不会被改变。- 对于不同类型的数据进行排序时要注意,因为不是所有的数据类型都可以直接比较。例如,直接比较字符串和数字会引发错误。
sorted()
是 Python 中一个非常实用的函数,它提供了强大而灵活的方式来排序各种类型的数据。