Python中sort()和sorted()的区别

sort() 和 sorted() 是 Python 中用于排序的两个常用函数,但它们在使用方式和功能上有一些区别。

1. sort() 函数

  • 功能sort() 是列表对象的一个方法,用于对列表进行原地排序(即直接修改原列表)。

  • 返回值: 无返回值(返回 None),因为它直接修改原列表。

  • 语法list.sort(key=None, reverse=False)

    • key: 可选参数,用于指定排序的依据(如一个函数)。

    • reverse: 可选参数,默认为 False,表示升序排序;如果为 True,则表示降序排序。

示例:
numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5]
numbers.sort()
print(numbers)  # 输出: [1, 1, 2, 3, 4, 5, 5, 6, 9]

# 降序排序
numbers.sort(reverse=True)
print(numbers)  # 输出: [9, 6, 5, 5, 4, 3, 2, 1, 1]

2. sorted() 函数

  • 功能sorted() 是一个内置函数,可以对任何可迭代对象进行排序,并返回一个新的排序后的列表,原对象不会被修改。

  • 返回值: 返回一个新的排序后的列表。

  • 语法sorted(iterable, key=None, reverse=False)

    • iterable: 需要排序的可迭代对象(如列表、元组、字符串等)。

    • key: 可选参数,用于指定排序的依据(如一个函数)。

    • reverse: 可选参数,默认为 False,表示升序排序;如果为 True,则表示降序排序。

示例:
numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5]
sorted_numbers = sorted(numbers)
print(sorted_numbers)  # 输出: [1, 1, 2, 3, 4, 5, 5, 6, 9]
print(numbers)  # 输出: [3, 1, 4, 1, 5, 9, 2, 6, 5](原列表未改变)

# 降序排序
sorted_numbers_desc = sorted(numbers, reverse=True)
print(sorted_numbers_desc)  # 输出: [9, 6, 5, 5, 4, 3, 2, 1, 1]

3. 主要区别

特性sort()sorted()
作用对象仅适用于列表适用于任何可迭代对象
是否修改原对象是(原地排序)否(返回新列表)
返回值无返回值(返回 None返回一个新的排序后的列表

4. 使用场景

  • 如果你希望直接修改原列表并且不需要保留原列表的顺序,使用 sort()

  • 如果你希望保留原列表的顺序,或者需要对非列表的可迭代对象进行排序,使用 sorted()

5. key 参数的使用

key 参数允许你指定一个函数,该函数将作用于每个元素上,并根据函数的返回值进行排序。

示例:
# 按字符串长度排序
words = ["apple", "banana", "cherry", "date"]
sorted_words = sorted(words, key=len)
print(sorted_words)  # 输出: ['date', 'apple', 'banana', 'cherry']

# 按元组的第二个元素排序
pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]
sorted_pairs = sorted(pairs, key=lambda x: x[1])
print(sorted_pairs)  # 输出: [(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')]

总结来说,sort() 和 sorted() 都是用于排序的工具,但根据是否需要修改原对象以及作用对象的类型,你可以选择使用哪一个。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

甯公子_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值