python中的sort和sorted
共同点
都有三个参数,
cmp用户自定义(指定函数),每个元素都会调用,效率没key高
key带一个参数的函数,用来为每个元素提取比较值
reverse=True 翻转
sort
sort作用的对象一般是列表
sort直接排序后就改变了自己,不用生成新的对象,所以效率更高
>>> m.sort(reverse=True
>>> m
[5, 4, 3, 2, 1]
['This', 'is', 'a', 'test', 'string', 'from', 'Andrew']
>>> m.sort()
>>> m
['Andrew', 'This', 'a', 'from', 'is', 'string', 'test']
>>> m.sort(key=str.lower)
>>> m
['a', 'Andrew', 'from', 'is', 'string', 'test', 'This']
sorted
python的内置函数
能够接受一切可迭代的对象
排序后不会改变自身,会新建一个对象,因此效率较低,但功能强大
对字典的排序(只是key)
>>> sorted({1: 'D', 2: 'B', 3: 'B', 4: 'E', 5: 'A'})
[1, 2, 3, 4, 5]
>>> sorted("This is a test string from Andrew".split(), key=str.lower)
['a', 'Andrew', 'from', 'is', 'string', 'test', 'This'] #和上面的sort也可以
key参数需要指定一个函数,这个函数一个需要一个参数,且返回一个可用来比较的权值
这个函数仅仅会调用一次,比cmp参数指定的函数效率要高
我们可以使用operator中itemgetter, attrgetter, methodcaller来快速定义key函数,
>>> from operator import itemgetter, attrgetter, methodcaller
>>> sorted(student_tuples, key=itemgetter(1,2)) #允许多级比较
[('john', 'A', 15), ('dave', 'B', 10), ('jane', 'B', 12)] #和上面的sort也可以
>>> test #字典同样也可以多级比较,只不过是指定key
[{'grade': 'A', 'score': 15, 'name': 'john'}, {'grade': 'B', 'score': 10, 'name': 'dave'}, {'grade': 'B', 'score': 12, 'name': 'jane'}]
>>> sorted(test, key=itemgetter('score','grade') )
[{'grade': 'B', 'score': 10, 'name': 'dave'}, {'grade': 'B', 'score': 12, 'name': 'jane'}, {'grade': 'A', 'score': 15, 'name': 'john'}]
使用attrgetter,可以对 对象的属性进行排序等
sorted(student_objects, key=attrgetter('grade', 'age'))
[('john', 'A', 15), ('dave', 'B', 10), ('jane', 'B', 12)]
对字典排序:
>>> test #按分数排再按等级排
{'sun': ['E', 3], 'zhao': ['A', 90], 'wang': ['A', 88], 'li': ['B', 75]}
>>> sorted(test.iteritems(), key=lambda x: (x[1][1],x[1][0]))
[('sun', ['E', 3]), ('li', ['B', 75]), ('wang', ['A', 88]), ('zhao', ['A', 90])]
python中的sort和sorted的更多相关文章
- Python中的 sort 和 sorted
今天在做一道题时,因为忘了Python中sort和sorted的用法与区别导致程序一直报错,找了好久才知道是使用方法错误的问题!现在就大致的归纳一下sort和sorted的用法与区别 1. sort: ...
- python中的sort、sorted、reverse、reversed详解
python语言中的列表排序方法有三个:reverse反转/倒序排序.sort正序排序.sorted可以获取排序后的列表.在更高级列表排序中,后两中方法还可以加入条件参数进行排序. reverse() ...
- python中list.sort()与sorted()的区别
list.sort()和sorted()都是python的内置函数,他们都用来对序列进行排序,区别在于 list.sort()是对列表就地(in-place)排序,返回None:sorted()返回排 ...
- python中的sort、sorted排序
我们通常会遇到对数据库中的数据进行排序的问题,今天学习一下对列表和字典的排序方法. 列表 第一种:内建方法sort sort()对列表排序是永久性的排序. 用法:sort(*, key=None, r ...
- python中的sort方法
Python中的sort()方法用于数组排序,本文以实例形式对此加以详细说明: 一.基本形式 列表有自己的sort方法,其对列表进行原址排序,既然是原址排序,那显然元组不可能拥有这种方法,因为元组是不 ...
- python中的sort方法使用详解
Python中的sort()方法用于数组排序,本文以实例形式对此加以详细说明: 一.基本形式 列表有自己的sort方法,其对列表进行原址排序,既然是原址排序,那显然元组不可能拥有这种方法,因为元组是不 ...
- Python中的sort()
Python中的sort()方法用于数组排序,本文以实例形式对此加以详细说明: 一.基本形式列表有自己的sort方法,其对列表进行原址排序,既然是原址排序,那显然元组不可能拥有这种方法,因为元组是不可 ...
- 第8.23节 Python中使用sort/sorted排序与“富比较”方法的关系分析
一. 引言 <第8.21节 Python中__lt__.gt__等 "富比较"("rich comparison")方法用途探究>和<第8.2 ...
- python中的sort方法和sorted方法
一.sort()函数 描述 sort() 函数用于对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数. 语法 sort()方法语法: 1 list.sort(cmp=None, key=No ...
随机推荐
- HBase运维基础--元数据逆向修复原理
背景 鉴于上次一篇文章——“云HBase小组成功抢救某公司自建HBase集群,挽救30+T数据”的读者反馈,对HBase的逆向工程比较感兴趣,并咨询如何使用相应工具进行运维等等.总的来说,就是想更深层 ...
- set -- $variable
1 set --的用途 给位置参数赋值. 2 $variable是如何赋值给位置参数的 假如variable=a b c?或者variable=a;b;c? 这里果然和IFS有关,默认情况下,vari ...
- 小程序 单页应用的 tab切换 实现
小程序 单页应用的 tab切换 实现
- Cluster Mode Overview
https://spark.apache.org/docs/latest/cluster-overview.html
- ABAP range 用法
转自http://www.sapjx.com/abap-range-table.html 1. Range Table 概述 Range Table 为 SAP R/3系统标准内表的一种,结构与 Se ...
- C# delegate Action<T> lambda表达式
转载以记录:http://blog.csdn.net/educast/article/details/7219854 在使用 Action<T> 委托时,不必显式定义一个封装只有一个参数的 ...
- 如何在 Ubuntu 云服务器上部署自己的 Rails 应用
安装步骤 参考:https://ruby-china.org/topics/32851 在云服务器上安装Ruby|Rails : http://www.cnblogs.com/znsongshu/p ...
- ref 与 $refs 如何关联
先问大家一个简单的问题: 还有人记得 jquery 里面的 data 方法是如何让 DOM 节点绑定对应的数据对象的吗 有时候我们做节点关联设计的思路其实有一点类似,但是在 vue 里面多了很多概念, ...
- html5--6-63 布局
html5--6-63 布局 实例 学习要点 掌握传统布局与CSS3新增布局方式的实现和应用 掌握CSS3新增属性box-sizing 了解CSS3新增的多列布局 常用布局方式 固定布局与流体布局的优 ...
- 【转载】U3D 游戏引擎之游戏架构脚本该如何来写
原文:http://tech.ddvip.com/2013-02/1359996528190113.html Unity3D 游戏引擎之游戏架构脚本该如何来写 2013-02-05 00:48:4 ...