Python-sorted函数

一.sorted函数

1.1解释

>>> help(sorted)
Help on built-in function sorted in module __builtin__:

sorted(...)
    sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list

返回副本,原始输入不变

1.2参数说明

iterable:是可迭代类型,即要排序的对象,不一定是List
cmp:用于比较的函数,比较什么由key决定;
key:用列表元素的某个属性或函数进行作为关键字;即要比较的具体元素!如果没有,默认为iterable中元素
reverse:排序规则. reverse = True  降序 或者 reverse = False 升序,默认是升序!
返回值:是一个经过排序的可迭代类型,与iterable一样。

1.3实例理解:据实例加深sorted的用法及理解。

1.t_list = [4, -5, 7, 1, -3, 2, -9]
if __name__ == '__main__':
    print(sorted(t_list))
    # 根据绝对值升序排序!
    print(sorted(t_list, key=lambda key: abs(key)))

2. students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10),]  

2.1 用key函数排序:返回由tuple组成的list

 sorted(students, key=lambda student : student[2])   # sort by age  

输出:[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]  

2.2 用cmp函数排序:

sorted(students, cmp=lambda x,y : cmp(x[2], y[2])) # sort by age  

输出:[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]  

 

二、sort函数

1.函数解释

>>> help(list.sort)
Help on method_descriptor:

sort(...)
    L.sort(cmp=None, key=None, reverse=False) -- stable sort *IN PLACE*;
    cmp(x, y) -> -1, 0, 1

2.参数说明:同sorted

3.举例理解:

(1)按照元素长度排序

L = [{1:5,3:4},{1:3,6:3},{1:1,2:4,5:6},{1:9}]

def f(x):
    return len(x)
sort(key=f)
print L
 
输出:
[{1: 9}, {1: 5, 3: 4}, {1: 3, 6: 3}, {1: 1, 2: 4, 5: 6}]
(2)按照每个字典元素里面key为1的元素的值排序
L = [{1:5,3:4},{1:3,6:3},{1:1,2:4,5:6},{1:9}]
def f2(a,b):
    return a[1]-b[1]
L.sort(cmp=f2)
print L
三、sort和sorted区别:
最大区别:sort对原List进行修改,而sorted是输出的副本。
参考:https://www.cnblogs.com/sysu-blackbear/p/3283993.html

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/dLarger/p/10735307.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值