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的更多相关文章

  1. Python中的sorted() 和 list.sort() 的用法总结

    只要是可迭代对象都可以用sorted . sorted(itrearble, cmp=None, key=None, reverse=False) =号后面是默认值 默认是升序排序的, 如果想让结果降 ...

  2. 2018.8.15 python 中的sorted()、filter()、map()函数

    主要内容: 1.lambda匿名函数 2.sorted() 3.filter() 4.map() 5.递归函数 一. lambda匿名函数 为了解决一些简单的需求而设计的一句话函数 # 计算n的n次方 ...

  3. Python中的sorted函数以及operator.itemgetter函数 【转载】

    operator.itemgetter函数operator模块提供的itemgetter函数用于获取对象的哪些维的数据,参数为一些序号(即需要获取的数据在对象中的序号),下面看例子. a = [1,2 ...

  4. Python中的sorted函数以及operator.itemgetter函数

    operator.itemgetter函数operator模块提供的itemgetter函数用于获取对象的哪些维的数据,参数为一些序号(即需要获取的数据在对象中的序号),下面看例子. a = [1,2 ...

  5. Python中的sorted函数

    今天在做一个中文文本分类的项目,遇到了一个sorted函数,发现并不会用... 记录一下: sorted(list, key, reverse) list是给定的列表: key是排序过程调用的函数,也 ...

  6. python中list总结

    转自python中list总结 一.list可以看做是一个数据结构,也是一个class, 用help(list)可以看见其方法,元素的增删改查都有各种现成的方法, 二.list操作包含以下函数:1.c ...

  7. Python中sorted()方法

    Python中sorted()方法的用法 1.先说一下iterable,中文意思是迭代器. Python的帮助文档中对iterable的解释是:iteralbe指的是能够一次返回它的一个成员的对象.i ...

  8. Python 函数式编程 & Python中的高阶函数map reduce filter 和sorted

    1. 函数式编程 1)概念 函数式编程是一种编程模型,他将计算机运算看做是数学中函数的计算,并且避免了状态以及变量的概念.wiki 我们知道,对象是面向对象的第一型,那么函数式编程也是一样,函数是函数 ...

  9. python 中 sorted() 和 list.sort() 的用法

    今天用python自带的sorted对一个列表进行排序, 在这里总结一下 只要是可迭代对象都可以用sorted . sorted(itrearble, cmp=None, key=None, reve ...

随机推荐

  1. 软考——(1)J2SE

    我们先从Java说起,简单的说,Java是一种面向对象的程序设计语言,可跨平台使用. 与之前学习的程序设计语言相比,最值得一提的就是Java的两种核心机制:Java虚拟机和垃圾回收机制. 1)虚拟机 ...

  2. [转]mysql联合索引

    mysql联合索引   命名规则:表名_字段名1.需要加索引的字段,要在where条件中2.数据量少的字段不需要加索引3.如果where条件中是OR关系,加索引不起作用4.符合最左原则 https:/ ...

  3. msvs命令行编译lua5.3.4

    msvs命令行编译lua5.3.4 vslua.bat @echo off md bin md lib md include cd src cl /c /nologo /W3 /O2 /Ob1 /Oi ...

  4. 让JS帮你决定午餐吃什么吧

    最愁就是每天中午吃什么了,有空就做了个 JavaScript 轮播随机选择.会轮播预先自定义的菜单中,然后点选定的时候确定一款.代码可以查看本页源代码获得,你可以自定义修改菜单数组. 效果演示 准备选 ...

  5. [ CodeVS冲杯之路 ] P3117

    不充钱,你怎么AC? 题目:http://codevs.cn/problem/3117/ 啊啊啊,基础的高精度乘法被我写得又臭又长,以后再来优化代码(DP着哪天能够把加减乘除全部写一边贴上来,哦对还有 ...

  6. Log4Net日志分类和自动维护

    背景 在程序中,我们调试运行时信息,Log4Net是一个不错的解决方案.不知道是我用的不好,用到最后反而都不想看日志了.原因是因为我n个功能使用的默认的Logger来记录日志,这样以来,所有功能记录的 ...

  7. [HDU_3652]B-number

    题目描述 A wqb-number, or B-number for short, is a non-negative integer whose decimal form contains the ...

  8. COMPANY_点取消会卡死的解决方法

    // OLD void ctonedlg::onbtn_basedir_clicked() {     m_basedir = getUserSelectDir();     doSearchDir( ...

  9. 6.DataFrame(列运算)

    from odps import ODPS from odps.df import DataFrame o = ODPS(access_id="LTAIBb3aOF3ghjek", ...

  10. vue.js基本使用

    #原创,转载请留言联系 什么是vue.js Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的渐进式框架. Vue 只关注视图层, 采用自底向上增量开发的设计. Vue 的目 ...