Python sorted 和 sort() 的区别

本文详细介绍了Python中的两种排序函数:sorted()和list.sort()。sorted()适用于任意可迭代对象排序,不改变原序列;list.sort()则用于列表排序,直接在原列表上进行操作。通过实例展示了如何按名字和成绩对元组列表进行排序。在使用时,根据是否需要保留原列表选择合适的方法。
摘要由CSDN通过智能技术生成

今天遇到了这两个有关于排序的函数,一个是 sorted() 一个是 sort()

一、特别说明以下3条:

1.sort() 函数只适用于列表排序,而 sorted() 函数适用于任意可以迭代的对象排序,如:列表,元组

2.sort() 函数排序会改变原有的待排序列表,sorted() 函数不会改变原有的待排序序列,而是返回一个的序列

#  例一
a = [3, 6, 7, 8, 5]
b = sorted(a)
print(a)
print(b)

结果如下:

[3, 6, 7, 8, 5]
[3, 5, 6, 7, 8]
# 例二
a = [3, 6, 7, 8, 5]
a.sort()
print(a)

结果如下:

[3, 5, 6, 7, 8]

3.在使用列表进行排序时,需要考虑是否需要保存原列表,如果无需保存原列表,则优先使用sort() 节省内存空间,提高效率

二、sorted 语法:

sorted(iterable, key=None, reverse=False)

参数说明:

  • iterable – 可迭代对象。

  • key – 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。

  • reverse – 排序规则,reverse = True 降序 , reverse = False 升序(默认)。

练习题:

假设我们用一组tuple表示学生名字和成绩:
L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]sorted() 对上述列表:

(1)按名字排序:
(2)按成绩从高到低排序:
>>> print('sorted_by_name:', sorted(L, key=lambda x: x[0]))
sorted_by_name: [('Adam', 92), ('Bart', 66), ('Bob', 75), ('Lisa', 88)]

>>>print('sorted_by_score:', sorted(L, key=lambda x: x[1], reverse=True))
sorted_by_score: [('Adam', 92), ('Lisa', 88), ('Bob', 75), ('Bart', 66)]

三、sort() 语法

list.sort(cmp=None, key=None, reverse=False)
参数说明:

  • cmp – 可选参数, 如果指定了该参数会使用该参数的方法进行排序。

  • key – 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。

  • reverse – 排序规则,reverse = True 降序, reverse = False 升序(默认)。

实例1:

# 列表
vowels = ['e', 'a', 'u', 'o', 'i']
 
# 降序
vowels.sort(reverse=True)
 
# 输出结果
print('降序输出:')
print( vowels )

以上实例输出结果如下:

降序输出:
['u', 'o', 'i', 'e', 'a']

参考博主:https://www.cnblogs.com/liangmingshen/p/10061552.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

梁同学与Android

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

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

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

打赏作者

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

抵扣说明:

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

余额充值