第6章 函数

sort函数定义:sort(cmp=None, key=None, reverse=False)

sorted函数定义:sorted(iterable, cmp=None, key=None, reverse=False)
参数解析:
iterable:是可迭代类型;
cmp:用于比较的函数(大于时返回1,小于时返回-1,等于时返回0),比较什么由key决定,有默认值,迭代集合中的一项;
key:用列表元素的某个属性和函数进行作为关键字,有默认值,迭代集合中的一项;
reverse:排序规则. reverse = True 或者 reverse = False,有默认值。
注:sort( )函数与sorted( )函数最大的区别是, sort( )函数时对已存在的列表进行操作,调用其没有返回值;而sorted( )函数是返回一个新的list,不在原来的list上进行操作,调用其返回一个排好序的list。
示例1:
a = [2, 1, 4, 9, 6]
a.sort()
print a
c = [2, 1, 4, 9, 6]
d = sorted©
print d
print c
输出:
[1, 2, 4, 6, 9]
[1, 2, 4, 6, 9]
[2, 1, 4, 9, 6]
示例1是采用函数默认的设置,对于排序参数设置,主要有以下三种:基于cmp;基于key;基于reverse。
下面仅以sorted()函数举例,sort()函数可以参考sorted()函数的用法。

1、基于cmp
L = [(‘a’, 3), (‘d’, 2), (‘c’, 1), (‘b’, 4)]
a = sorted(L, cmp=lambda x, y : cmp(x[0], y[0]))
b = sorted(L, cmp=lambda x, y : cmp(x[1], y[1]))
print L
print a
print b
输出:
[(‘a’, 3), (‘d’, 2), (‘c’, 1), (‘b’, 4)]
[(‘a’, 3), (‘b’, 4), (‘c’, 1), (‘d’, 2)]
[(‘c’, 1), (‘d’, 2), (‘a’, 3), (‘b’, 4)]

2、基于key
L = [(‘a’, 3), (‘d’, 2), (‘c’, 1), (‘b’, 4)]
a = sorted(L, key=lambda x : x[0])
b = sorted(L, key=lambda x : x[1])
print L
print a
print b
输出:
[(‘a’, 3), (‘d’, 2), (‘c’, 1), (‘b’, 4)]
[(‘a’, 3), (‘b’, 4), (‘c’, 1), (‘d’, 2)]
[(‘c’, 1), (‘d’, 2), (‘a’, 3), (‘b’, 4)]

3、基于reverse
L = [2, 1, 4, 9, 6]
a = sorted(L, reverse=True)
b = sorted(L, reverse=False)
print L
print a
print b
输出:
[2, 1, 4, 9, 6]
[9, 6, 4, 2, 1]
[1, 2, 4, 6, 9]
从以上实验可以看出:
1、函数sorted()不改变原来的list,而是返回一个新的排好序的list。
2、cmp与key均可以采用lambda表达式
3、采用cmp是确定排序方式(如:从大到小还是从小到大),排序的key是函数自己选择;采用key是确定排序的key,排序方式是函数自己选择。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值