python 中的 sorted
1) 输入help(sorted)可以得到下面类容:
----------------------------------------------------------------------------------
sorted(...)
sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list
-----------------------------------------------------------------------------------
sorted 可以对任意一个可迭代序列进行排序。如下:
print sorted([1,2,-9,3,5,4]) # [-9, 1, 2, 3, 4, 5]
print sorted({1:4,89:3,-9:4,10:2}) # [-9, 1, 10, 89]
sorted对对迭代序列排序后,返回排序后的列表,原序列不变。而像列表等自带的sort()方法则是在原地进行排序。
2)key参数
list.sort()和sorted()函数增加了key参数来指定一个函数,此函数将在每个元素比较前被调用.一般可使用lambda表达式,看下面例子:
# 用key指定排序忽略大小写
s = ['asrt','Afjg','bdfk','Ckfdh']
print sorted(s) # ['Afjg', 'Ckfdh', 'asrt', 'bdfk']
print sorted(s,key = lambda element: element.lower()) # ['Afjg', 'asrt', 'bdfk', 'Ckfdh']
key参数的值为一个函数,此函数只有一个参数且返回一个值用来进行比较。这个技术是快速的因为key指定的函数将准确地对每个元素调用。如下对复杂对象排序:
s = [('Hailey',23,175),('Lily',22,180),('Mike',19,170)]
print sorted(s) # [('Hailey', 23, 175), ('Lily', 22, 180), ('Mike', 19, 170)]
print sorted(s,key = lambda element:element[1]) # [('Mike', 19, 170), ('Lily', 22, 180), ('Hailey', 23, 175)]
对于多元对象,sorted是默认根据第一个元素进行排序的。上面用key指定的用哪个元素排序。这种方法也可以用于类:
class Student(object):
def __init__(self,name, age, weight):
self.age = age
self.name = name
self.weight = weight
def __repr__(self):
return repr((self.name,+self.age,self.weight))
instance = [Student('Lily',20,55),Student('Mike',21,78),Student('Aan',20,45)]
# 默认按照第一个属性姓名排序
print sorted(instance) # [('Aan', 20, 45), ('Mike', 21, 78), ('Lily', 20, 55)]
# 指定按照age来排序
print sorted(instance,key = lambda element:element.age) #[('Lily', 20, 55), ('Aan', 20, 45), ('Mike', 21, 78)]
# 先按照 sge,再按照weight来排序
print sorted(instance,key = lambda element:(element.age,element.weight))
# [('Aan', 20, 45), ('Lily', 20, 55), ('Mike', 21, 78)]
3)cmp 参数
cmp参数和其他语言类似,cm效率没有key高,在puthon 3中已被移除
4) reverse 参数
reverse 参数默认为升序,当设置它为True时,即为降序。
l = [2,5,1,0,2,7,1]
print sorted(l) # [0, 1, 1, 2, 2, 5, 7]
print sorted(l,reverse = True) # [7, 5, 2, 2, 1, 1, 0]
python 中的 sorted的更多相关文章
- Python中的sorted() 和 list.sort() 的用法总结
只要是可迭代对象都可以用sorted . sorted(itrearble, cmp=None, key=None, reverse=False) =号后面是默认值 默认是升序排序的, 如果想让结果降 ...
- 2018.8.15 python 中的sorted()、filter()、map()函数
主要内容: 1.lambda匿名函数 2.sorted() 3.filter() 4.map() 5.递归函数 一. lambda匿名函数 为了解决一些简单的需求而设计的一句话函数 # 计算n的n次方 ...
- Python中的sorted函数以及operator.itemgetter函数 【转载】
operator.itemgetter函数operator模块提供的itemgetter函数用于获取对象的哪些维的数据,参数为一些序号(即需要获取的数据在对象中的序号),下面看例子. a = [1,2 ...
- Python中的sorted函数以及operator.itemgetter函数
operator.itemgetter函数operator模块提供的itemgetter函数用于获取对象的哪些维的数据,参数为一些序号(即需要获取的数据在对象中的序号),下面看例子. a = [1,2 ...
- Python中的sorted函数
今天在做一个中文文本分类的项目,遇到了一个sorted函数,发现并不会用... 记录一下: sorted(list, key, reverse) list是给定的列表: key是排序过程调用的函数,也 ...
- python中list总结
转自python中list总结 一.list可以看做是一个数据结构,也是一个class, 用help(list)可以看见其方法,元素的增删改查都有各种现成的方法, 二.list操作包含以下函数:1.c ...
- Python中sorted()方法
Python中sorted()方法的用法 1.先说一下iterable,中文意思是迭代器. Python的帮助文档中对iterable的解释是:iteralbe指的是能够一次返回它的一个成员的对象.i ...
- Python 函数式编程 & Python中的高阶函数map reduce filter 和sorted
1. 函数式编程 1)概念 函数式编程是一种编程模型,他将计算机运算看做是数学中函数的计算,并且避免了状态以及变量的概念.wiki 我们知道,对象是面向对象的第一型,那么函数式编程也是一样,函数是函数 ...
- python 中 sorted() 和 list.sort() 的用法
今天用python自带的sorted对一个列表进行排序, 在这里总结一下 只要是可迭代对象都可以用sorted . sorted(itrearble, cmp=None, key=None, reve ...
随机推荐
- oracle定时job粗解
其中一篇随笔我写了oracle的存储过程大概的介绍,存储过程除了自身有in的param,来进行程序调用处理之外,还可以通过定时任务的方式调用来执行. 应用场景: 数据同步:有两个显示菜单,“信息编辑” ...
- 201621123034 《Java程序设计》第8周学习总结
作业08-集合 1. 本周学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 2. 书面作业 1. ArrayList代码分析 1.1 解释ArrayList的contains源代码 答 ...
- vb如何将数据库中某个字段显示在一个文本框
Dim mrc As ADODB.Recordset Private Sub cmdQuery_Click() Dim txtSQL As String Dim MsgText As String t ...
- 使用awk根据多维度统计系统tps
业务简单日志格式: [2017-08-28 01:00:00.523]transfer_search,7001045,1708271100083774377,20170827,,,,,,,,,,001 ...
- 嵌入式Linux支持LCD console【转】
转自:http://blog.sina.com.cn/s/blog_664c545f0100v9zl.html 转载:http://www.mculee.cn/post/48.html [1]LCD ...
- picker(拖拽上下拉动的选项)
[b]新版本更新:鼠标上下拖动选择内容:http://hiuman.iteye.com/blog/2353563[/b] (如有错敬请指点,以下是我工作中遇到并且解决的问题) 一开始搜这个内容的时候, ...
- python 向mysql插入数据
生成随机内容用到的方法: substr是一个字符串函数,从第二个参数1,开始取字符,取到3 + floor(rand() * 75)结束 floor函数代表的是去尾法取整数. rand()函数代表的是 ...
- dll共享段中一些需要注意的问题
Visual C++ 如何与应用程序或其他 DLL 共享自己 DLL 中的数据? Win32 DLL 映射到调用进程的地址空间中.默认情况下,每个使用 DLL 的进程都有自己的所有 DLL 全局变量和 ...
- input 限制输入字段总结
把输入框中 输入的字符串含有中文逗号 改成 英文逗号 举例: <input type="text" id="keywords" style="w ...
- WINFORM写入COOKIE
[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)] public static exte ...