Python函数式编程——sorted和sort函数

这节主要讲的是sorted,因为sort函数的排序仅限于列表,而sorted对于所有的可迭代对象都可进行排序,所以更加的常用。
还有一点是比较重要的,对于排序sort是在list的原址上进行排序排序的,而sorted返回的是一个已经排好序的副本,其原址Iterable的序列并没有变化

**在正式将sorted函数之前,我们简单的讲一下Python的匿名函数lambda(其在Python中用的比较窄)
其在其一般形式为lambda x: x+x 返回的是计算的结果。其中冒号前的x代表的是参数,后面的对于x的操作代表的是返回的结果
其相当于函数:
def fn(x):
return x+x

所以lambda常用在sorted的第二个参数上,用于返回关键字或是序列的新值**

二、sorted函数
(一)、sorted的参数:
sorted(Iterable,key,reverse)
如上,sorted有三个参数
①Iterable是带排序的可迭代对象
②key其对应一个函数,该函数作用于可迭代对象的每个值上,并返回函数操作的结果排序是根据每个迭代数值返回的结果排序,但排序返回的结果还是原来list中的元素
③reverse 有两个值:reverse=True和reverse=False,分别指示对Iterable的排序是按倒序和顺序来排列,其默认值是第二个(默认按顺序排列的)
举个例子:

>>>Iiterable=[3,45,56,2,4]
>>>list=sorted(Iiterable,key=lambda x:-x,reverse=True)
>>>list
[2,3,4,45,56]

在用sorted进行dict排序时,对key值,value值和item进行排序的方法如下:
首先确定一个dict:
di={3:2,3:6,8:5,9:1}
对于di的di.values()指将di中的value值取出来单独作为一个list
如:

>>>di={3:2,3:6,8:5,9:1}
>>>di.values()
dict.values([2,6,5,1])
同样,对于key值也是取出来作为一个list
但是对di进行di.items()操作是将di中的每个(key-value)对,做成一个元组,然后将所有的元组组合形成一个list
所以,就可以将对dict形式的排序转化为对list形式的排序了
>>>sorted(di.values())
[1,2,5,6]
>>>sorted(di.keys())
[1,3,3,5]
#而对于item的排序需要在key函数中指出根据元组中的那个元素进行排序
>>>sorted(di.items(),key=lambda item:item[0])
[(1,9),(3,2),(3,6),(8,5)]  #式子中的item是一个参数名,可以是任意变量名,不一定是item

好了,这就是对于sorted函数的讲解了。当然sort函数跟sorted的用法基本一致,只不过sort函数只能用于list的排序
,而sorted函数可用于任何可迭代的对象。这个前面已经讲过了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值