Python3:sorted()函数及列表中的sort()函数
一、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)]
- 转载请注明作者和出处:http://blog.csdn.net/u011475210
Python3:sorted()函数及列表中的sort()函数的更多相关文章
- C中的qsort函数和C++中的sort函数的理解与使用
一.qsort()函数 原型:_CRTIMP void __cdecl qsort (void*, size_t, size_t,int (*)(const void*, const void*)); ...
- python3中的 zip()函数 和python2中的 zip()函数 的区别
python3中的 zip()函数 和python2中的 zip()函数 的区别: 描述: zip() 函数用于将可迭代对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象. ...
- 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 ...
- python列表中的pop函数
再python的列表中,有许多的内置方法,而在这里我主要向大家介绍一下pop函数. pop函数主要是用于删除列表中的数据.而其删除值时会返回删除的值.如果没有参数传入时, 则会默认认为删除列表的最后一 ...
- java中的Sort函数,你值得看
基于C语言中的sort如此这么方便,自然而然,java中也有类似C的sort函数. 1.普通数组:Arrays.sort(数组名,开始位置,结束位置). 2.类中属性排序: 模板: class A { ...
- C++中的sort函数
(一)为什么要用c++标准库里的排序函数 Sort()函数是c++一种排序方法之一,学会了这种方法也打消我学习c++以来使用的冒泡排序和选择排序所带来的执行效率不高的问题!因为它使用的排序方法是类似于 ...
- C++中得sort函数的比较函数(第三个参数)为什么要声明为static
sort中的比较函数compare要声明为静态成员函数或全局函数,不能作为普通成员函数,否则会报错. 因为:非静态成员函数是依赖于具体对象的,而std::sort这类函数是全局的,因此无法再sort中 ...
- C++中的sort函数和⾃定义cmp函数
写在最前面,本文摘录于柳神笔记: sort 函数在头⽂件 #include ⾥⾯,主要是对⼀个数组进⾏排序( int arr[] 数组或 者 vector 数组都⾏), vector 是容器,要⽤ v ...
- 为什么map对象不能使用stl中的sort函数
STL所提供的各式各样算法中,sort()是最复杂最庞大的一个.这个算法接受两个RandomAccestlerators(随机存取迭代器),然后将区间内的所有元素以渐增方式由小到大重新排列.第二个版本 ...
随机推荐
- FMX取得屏分辨率
procedure Tfrm_Main.FormCreate(Sender: TObject); var ScreenSvc: IFMXScreenService; Size: TPointF; be ...
- Python 内置函数2
print(list("胡辣汤")) lst = ["河南话", "四川话", "东北", "山东" ...
- js中call、apply和bind的区别
在JS中,这三者都是用来改变函数的this对象的指向的,他们有什么样的区别呢.在说区别之前还是先总结一下三者的相似之处:1.都是用来改变函数的this对象的指向的.2.第一个参数都是this要指向的对 ...
- MySQL笔记(1)
数据库和 SQL 概念 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,它的产生距今已有六十多年.随着信息技术和市场的发展,数据库变得无处不在:它在电子商务.银行系统 等众多领域 ...
- 10.2.0.5环境dg测试logminer挖掘日志分析
起因:客户需求,数据库正常每天总的日志切换是20以内,有一天日志切换总数,达到30,客户建议使用Logminer进行日志挖掘分析,到底什么应用导致的问题. 说明:使用logminer进行日志挖掘,只能 ...
- SQL*Plus连接符拼接输出
在日常工作中,可能需要使用重复的命令,修改的只是某个不同字段的值,可以使用连接字符串进行拼接 #本篇文档: 一.使用连接符拼接SQL 二.Spool输出查询结果 三.Spool输出xml/ html ...
- tensorboard 可视化
#coding = utf8 import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data mn ...
- Linux系统下curl命令上传文件,文件名包含逗号无法上传
使用curl命令,将备份好的图片全部重新导入到seaweedfs,图片全部以存储在seaweedfs中的fid命令, fid中间有一个逗号,使用curl命令时报错: curl: (26) couldn ...
- Django自定义查询对象
在Django中,objects对象类继承于models.Manager 1.声明 EntryManager 类,继承自 models.Manager 允许在 EntryManager中增加自定义函数 ...
- Linux 服务器配置、运行、不用敲命令(新手必备!) - 宝塔全攻略建站一条龙
Linux 服务器配置.运行.不用敲命令 WordPress 建站攻略 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整 ...