sorted()属于内置函数,作用于任意可迭代的对象,sorted() 函数总是会返回一个排序后的列表,原有列表保持不变

sort()一般作用于列表,属于列表的成员函数,它会直接修改原有列表,函数返回为 None。sort()函数总体来说不需要复制原有列表,所以消耗内存比较小,效率也比较高

a=['1',1,'a',3,7,'n']
sorted(a)
>>>[1, 3, 7, '1', 'a', 'n']
a
>>>['1', 1, 'a', 3, 7, 'n']
print a.sort()
>>>None
a
>>>[1, 3, 7, '1', 'a', 'n']a = ['fsf','dadef','f''gt','frggr']
a.sort(key=len)
print(a)
>>>['fsf', 'fgt', 'dadef', 'frggr'] 

注:

如果实际应用中需要保存原列表,使用 sorted() 函数较为适合,否则可以选择 sort() 函数,因为 sort() 函数不需要复制原有列表,消耗的内存较少,效率也较高。

key 指定的函数将作用于 list 的每一个元素上,并根据 key 函数返回的结果进行排序
sorted([36, 5, -12, 9, -21], key=abs)
---[5, 9, -12, -21, 36]sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower)
---['about', 'bob', 'Credit', 'Zoo']要进行反向排序,不必改动key函数,可以传入第三个参数 reverse=True :
sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower,reverse=True)
---['Zoo', 'Credit', 'bob', 'about']

对于sorted()函数,他可以对不同的数据结构进行排序:

operator.itemgetter函数

operator模块提供的itemgetter函数用于获取对象的哪些维的数据,参数为一些序号(即需要获取的数据在对象中的序号)

from operator import itemgetter
a = [1,2,3,4]
b=itemgetter(3,0) //定义函数b,获取对象的第3个域和第0个的值
print(b(a))
---(4, 1)
# 注意operator.itemgetter函数获取的不是值,而是定义了一个函数,通过该函数作用到对象上才能获取值。

基础版

L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
from operator import itemgetter
L2 = sorted(L, key= itemgetter(0))
print(L2)
或者:
L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
a = sorted(L, key=lambda x: x[0])
print(a)---[('Adam', 92), ('Bart', 66), ('Bob', 75), ('Lisa', 88)]

对字典进行排序

phonebook = {'Linda': '7750', 'Bob': '9345', 'Carol': '5834'}
from operator import itemgetter
sorted_ed = sorted(phonebook.items(), key=itemgetter(0))
print(sorted_ed)---[('Bob', '9345'), ('Carol', '5834'), ('Linda', '7750')]

对多维list进行排序

from operator import itemgetter
gameresult = [['Bob', 95.00, 'A'], ['Alan', 86.0, 'C'],['Mandy', 82.5, 'A'], ['Rob', 86, 'E']]
sorted_ed = sorted(gameresult , key=itemgetter(2, 1))
print(sorted_ed)---[['Mandy', 82.5, 'A'], ['Bob', 95.0, 'A'], ['Alan', 86.0, 'C'], ['Rob', 86, 'E']]

list中混合字典排序,按照 rating 和 name进行排序的实现方法

gameresult = [{"name":"Bob", "wins":10, "losses":3, "rating":75.00},{"name":"David", "wins":3, "losses":5, "rating":57.00},{"name":"Carol", "wins":4, "losses":5, "rating":57.00},{"name":"Patty", "wins":9, "losses":3, "rating": 71.48}]
from operator import itemgetter
sorted_ed = sorted(gameresult, key=itemgetter("rating", "name"))
print(sorted_ed)---[{'name': 'Carol', 'wins': 4, 'losses': 5, 'rating': 57.0}, {'name': 'David', 'wins': 3, 'losses': 5, 'rating': 57.0},{'name': 'Patty', 'wins': 9, 'losses': 3, 'rating': 71.48}, {'name': 'Bob', 'wins': 10, 'losses': 3, 'rating': 75.0}]

不使用模块,只通过wins进行排序

a = sorted(gameresult,key=lambda x:x["wins"])
print(a)---[{'wins': 3, 'losses': 5, 'name': 'David', 'rating': 57.0}, {'wins': 4, 'losses': 5, 'name': 'Carol', 'rating': 57.0},
{'wins': 9, 'losses': 3, 'name': 'Patty', 'rating': 71.48}, {'wins': 10, 'losses': 3, 'name': 'Bob', 'rating': 75.0}] 

字典中混合list排序

mydict = {'Li': ['M', 7], 'Zhang': ['E', 2],'Wang': ['P', 3], 'Du': ['C', 2],'Ma': ['C', 9], 'Zhe': ['H', 7]}
from operator import itemgetter
sorted_ed = sorted(mydict.items(), key=itemgetter(1))
print(sorted_ed)---[('Du', ['C', 2]), ('Ma', ['C', 9]), ('Zhang', ['E', 2]), ('Zhe', ['H', 7]), ('Li', ['M', 7]), ('Wang', ['P', 3])

Python sort()和sorted()函数区别及用法详解相关推荐

  1. Python中sorted()函数的高级用法详解

    sorted()函数的作用是对对象进行排序 函数函数格式: sorted(iterable,key,reverse),key参数可传入一个自定义函数 下边通过具体例子说明sorted的具体用法: 一维 ...

  2. python中tile的用法_python3中numpy函数tile的用法详解

    tile函数位于python模块 numpy.lib.shape_base中,他的功能是重复某个数组.比如tile(A,n),功能是将数组A重复n次,构成一个新的数组,我们还是使用具体的例子来说明问题 ...

  3. python scatter参数详解_Python中scatter函数参数及用法详解

    最近开始学习Python编程,遇到scatter函数,感觉里面的参数不知道什么意思于是查资料,最后总结如下: 1.scatter函数原型 2.其中散点的形状参数marker如下: 3.其中颜色参数c如 ...

  4. python scatter参数详解_Python 中 scatter 函数参数及用法详解

    Python 中 scatter 函数参数及用法详解 Python 中 scatter 函数参数及用法详解 这里有新鲜出炉的 Python 教程, 程序狗速度看过来! Python 编程语言 Pyth ...

  5. python的编程模式-Python设计模式之状态模式原理与用法详解

    本文实例讲述了Python设计模式之状态模式原理与用法.分享给大家供大家参考,具体如下: 状态模式(State Pattern):当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类 ...

  6. Python中下划线 _ 的最全用法详解

    Python中下划线 _ 的最全用法详解 '_'是什么? _在python中可以作为一个标识符,用于定义变量和方法唯一名称.同时它也是Python中的一个软关键字,指在某些特定上下文中保留的关键字.截 ...

  7. Delphi Format函数功能及用法详解

    DELPHI中Format函数功能及用法详解 DELPHI中Format函数功能及用法详解function Format(const Format: string; const Args: array ...

  8. Python实用技巧:global关键字的用法详解

    这篇文章主要介绍了python global关键字的用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下: 想要更好的了解global关键字,首先 ...

  9. python的reshape方法_numpy库reshape用法详解

    numpy.reshape(重塑) 给数组一个新的形状而不改变其数据 numpy.reshape(a, newshape, order='C')参数: a:array_like 要重新形成的数组. n ...

最新文章

  1. 当移动数据分析需求遇到Quick BI
  2. 「机器学习速成」分类,评估指标(TP、FP、TN、FN),ROC曲线和AUC
  3. Qt文档阅读笔记|Qt实践| HTTPS知识点-获取某站点SSL证书
  4. car-like robot运动模型及应用分析(图片版)
  5. Cocos Creator 原生安卓改包名+AS运行到真机apk被slice处理而失败
  6. Pycharm 简单一步设置成官方中文版
  7. 求助文,缺少stubs-n32_hard.h
  8. 空头平仓什么意思_空头开仓和空头平仓是什么意思(贵金属交易口诀)
  9. linux ffmpeg 合并视频文件,使用ffmpeg合并视频
  10. Ubuntu下PX4飞控开发环境搭建
  11. java 缓存的简单实现
  12. 怎么锻炼孩子的想象力创造力_家长培养孩子想象力创造力的训练游戏
  13. 南京邮电大学C++实验报告3(仅供参考)
  14. List<String,Object>针对于集合中Map某个属性值求和
  15. 自动采集收录导航系统源码分享
  16. tyvj2032(超级源点)
  17. 雅虎称百度站在金山上挖煤 搜索已经黔驴技穷
  18. 5G时代的应用场景及商业模式和财富商机
  19. bsc是指什么_什么是平衡计分卡
  20. python listdir 共享目录 认证_Python使用os.listdir()和os.walk()获取文件路径与文件下所有目录的方法...

热门文章

  1. 使用U盘安装CentOS6.5
  2. MongoDB入门简单介绍
  3. Hejr 6-8 - aamsaafanqs Blog - Blogster
  4. NAP客户端计算机隔离测试之五
  5. 【学习笔记】HTTP通讯基础
  6. 供应商主数据屏幕增强
  7. CALL TRANSACTION用法
  8. SAP中和计量单位有关的表
  9. ALEIDoc EDI(1)--OverView
  10. SM30需要传输请求