一、sort,sorted函数介绍:

  Sort函数是list列表中的函数,而sorted可以对list或者iterator进行排序。

  下面我们使用help来查看他们的用法及功能: 
sort:

 >>>help(list.sort)
Help on method_descriptor: sort(...)
L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE*

sorted: 
Python3.x:

 >>> help(sorted)
Help on built-in function sorted in module builtins: sorted(iterable, /, *, key=None, reverse=False)
Return a new list containing all items from the iterable in ascending order. A custom key function can be supplied to customize the sort order, and the
reverse flag can be set to request the result in descending order.

Python2.x:

 >>> help(sorted)
Help on built-in function sorted in module __builtin__: sorted(...)
sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list

  好吧,Python3.x和Python2.x的sorted函数有点不太一样,少了cmp参数。下面本渣渣主要基于Python2.x的sorted函数进行讲解,Python3.x直接忽略cmp这个参数即可,为了保证代码通用性,不建议大家在今后的编程中使用cmp参数。

二、sort和sorted的比较:

  用sort函数对列表排序时会影响列表本身,而sorted不会。 
举例:

 >>> a = [1,2,1,4,3,5]
>>> a.sort()
>>> a
[1, 1, 2, 3, 4, 5]
>>> a = [1,2,1,4,3,5]
>>> sorted(a)
[1, 1, 2, 3, 4, 5]
>>> a
[1, 2, 1, 4, 3, 5]

  Python2.x的sorted函数:sorted(iterable,cmp,key,reverse) 
参数: 
- iterable可以是list或者iterator; 
- cmp是带两个参数的比较函数; 
- key 是带一个参数的函数; 
- reverse为False或者True;

举例说明: 
(1)用cmp函数排序:

 >>> list1 = [('david', 90), ('mary',90), ('sara',80),('lily',95)]
>>> sorted(list1,cmp = lambda x,y: cmp(x[0],y[0]))
[('david', 90), ('lily', 95), ('mary', 90), ('sara', 80)]
>>> sorted(list1,cmp = lambda x,y: cmp(x[1],y[1]))
[('sara', 80), ('david', 90), ('mary', 90), ('lily', 95)]

(2)用key函数排序:

 >>> list1 = [('david', 90), ('mary',90), ('sara',80),('lily',95)]
>>> sorted(list1,key = lambda list1: list1[0])
[('david', 90), ('lily', 95), ('mary', 90), ('sara', 80)]
>>> sorted(list1,key = lambda list1: list1[1])
[('sara', 80), ('david', 90), ('mary', 90), ('lily', 95)]

(3)用reverse排序:

 >>> sorted(list1,reverse = True)
[('sara', 80), ('mary', 90), ('lily', 95), ('david', 90)]

(4)用operator.itemgetter函数排序:

 >>> from operator import itemgetter
>>> sorted(list1, key=itemgetter(1))
[('sara', 80), ('david', 90), ('mary', 90), ('lily', 95)]
>>> sorted(list1, key=itemgetter(0))
[('david', 90), ('lily', 95), ('mary', 90), ('sara', 80)]

  介绍operator.itemgetter函数:

 >>> import operator
>>> a = [1,2,3]
>>> b = operator.itemgetter(0)
>>> b(a)
1

  operator.itemgetter函数获取的不是值,而是定义了一个函数。

(5)多级排序:

 >>> sorted(list1, key=itemgetter(0,1))
[('david', 90), ('lily', 95), ('mary', 90), ('sara', 80)]

Python3:sorted()函数及列表中的sort()函数的更多相关文章

  1. C中的qsort函数和C++中的sort函数的理解与使用

    一.qsort()函数 原型:_CRTIMP void __cdecl qsort (void*, size_t, size_t,int (*)(const void*, const void*)); ...

  2. python3中的 zip()函数 和python2中的 zip()函数 的区别

    python3中的 zip()函数 和python2中的 zip()函数 的区别: 描述: zip() 函数用于将可迭代对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象. ...

  3. python之BIF函数在列表中的应用

    1 Python 3.3.4 (v3.3.4:7ff62415e426, Feb 10 2014, 18:13:51) [MSC v.1600 64 bit (AMD64)] on win32 2 T ...

  4. python列表中的pop函数

    再python的列表中,有许多的内置方法,而在这里我主要向大家介绍一下pop函数. pop函数主要是用于删除列表中的数据.而其删除值时会返回删除的值.如果没有参数传入时, 则会默认认为删除列表的最后一 ...

  5. java中的Sort函数,你值得看

    基于C语言中的sort如此这么方便,自然而然,java中也有类似C的sort函数. 1.普通数组:Arrays.sort(数组名,开始位置,结束位置). 2.类中属性排序: 模板: class A { ...

  6. C++中的sort函数

    (一)为什么要用c++标准库里的排序函数 Sort()函数是c++一种排序方法之一,学会了这种方法也打消我学习c++以来使用的冒泡排序和选择排序所带来的执行效率不高的问题!因为它使用的排序方法是类似于 ...

  7. C++中得sort函数的比较函数(第三个参数)为什么要声明为static

    sort中的比较函数compare要声明为静态成员函数或全局函数,不能作为普通成员函数,否则会报错. 因为:非静态成员函数是依赖于具体对象的,而std::sort这类函数是全局的,因此无法再sort中 ...

  8. C++中的sort函数和⾃定义cmp函数

    写在最前面,本文摘录于柳神笔记: sort 函数在头⽂件 #include ⾥⾯,主要是对⼀个数组进⾏排序( int arr[] 数组或 者 vector 数组都⾏), vector 是容器,要⽤ v ...

  9. 为什么map对象不能使用stl中的sort函数

    STL所提供的各式各样算法中,sort()是最复杂最庞大的一个.这个算法接受两个RandomAccestlerators(随机存取迭代器),然后将区间内的所有元素以渐增方式由小到大重新排列.第二个版本 ...

随机推荐

  1. python列表(list)的使用技巧及高级操作

    python列表(list)的使用技巧及高级操作置顶 2018年03月25日 13:39:41 顽劣的石头 阅读数:5478 标签: python extend bisect list enumera ...

  2. Python 面向对象和面向过程对比

    # 大象装冰箱 # 脚本, 此时代码是最简单的. 不需要构思整个程序的概况 print("开门") print("装大象") print("关门&qu ...

  3. <转载> VUE项目中CSS管理

    vue的scoped 在vue项目中,当 .vue文件中 <style> 标签有 *scoped 属性时,它的 CSS 只作用于当前组件中的元素,很好的实现了样式私有化的目的. 使用sco ...

  4. Invocation of init method failed; nested exception is java.text.ParseException: '?' can only be specfied for Day-of-Month or Day-of-Week.

    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'cronTrigger' ...

  5. 单点登录系统---SSO

    1.------------------SSO介绍--------------------------------- 有什么卵用?搞什么飞机的? 大家看看这个图,一个系统是没有问题.如果是分布式的系统 ...

  6. MongDB篇,第三章:数据库知识3

    MongDB    数据库知识3 修改器 $inc 对某个域的值进行加减修改 $mul 对某个域的值进行乘法修改 $min 如果筛选的文档指定的值小于min则不修改,如果大于min 给定的值则修改为m ...

  7. Git忽略文件权限

    有时 git diff 执行显示文件内容没变化,但是git status却是一片姨妈红: 原因是文件的权限,被chmod变化了,这种变化也被 diff 识别出来了,git diff某个文件类似如下: ...

  8. C5-fasterrcnn-小象cv-code

    1.# Path to Shapes trained weightsSHAPES_MODEL_PATH = os.path.join(ROOT_DIR, "mask_rcnn_shapes. ...

  9. 对List数组进行排序 Collections.sort(param1,param2)

    @SuppressWarnings("unchecked") List<PageData> group_items_list = (List<PageData&g ...

  10. 基于C#利用ffmpeg提取视频帧

    利用ffmepg提取视频帧实际上是利用C#调用ffmepg命令行进行处理对应的视频,然后输出出视频帧 GetPicFromVideo("); static public string Get ...