您的位置:首页 > 编程语言 > Python开发

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

2017-11-16 13:29 183 查看
这节主要讲的是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函数可用于任何可迭代的对象。这个前面已经讲过了

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息