python的sort函数
一、基本形式
有两种形式:
(1)
iterable.sort(cmp=None, key=None, reverse=False) #python 2.x
iterable.sort(key=None, reverse=False) #python 3.x
(2)
sorted(iterable, cmp=None, key=None, reverse=False) #python 2.x
sorted(iterable, key=None, reverse=False) #python 3.x
# 由此可看出, Python 3.x 取消了 cmp 参数, 所以如果想给 sorted()函数传参的话, 就剩下 key, 和reverse了,
# 其中,reverse 就是返回 正常排序的反序,
作用:Return a new sorted list from the items in iterable.
参数解释:
第一个参数是一个iterable,返回值是一个对iterable中元素进行排序后的列表(list)。
二、普通用法:
1.原址排序
1)列表有自己的sort方法,其对列表进行原址排序,既然是原址排序,那显然元组不可能拥有这种方法,因为元组是不可修改的。
1
2
3
|
x = [ 4 , 6 , 2 , 1 , 7 , 9 ]
x.sort()
print x # [1, 2, 4, 6, 7, 9]
|
2.副本排序
1)[:]分片方法
1
2
3
4
5
|
x = [ 4 , 6 , 2 , 1 , 7 , 9 ]
y = x[ : ]
y.sort()
print y #[1, 2, 4, 6, 7, 9]
print x #[4, 6, 2, 1, 7, 9]
|
注意:y = x[:] 通过分片操作将列表x的元素全部拷贝给y,如果简单的把x赋值给y:y = x,y和x还是指向同一个列表,并没有产生新的副本。
2)sorted方法
sorted返回一个有序的副本,并且类型总是列表,如下:
1
2
3
4
|
x = [ 4 , 6 , 2 , 1 , 7 , 9 ]
y = sorted (x)
print y #[1, 2, 4, 6, 7, 9]
print x #[4, 6, 2, 1, 7, 9]
|
1
|
print sorted ( 'Python' ) #['P', 'h', 'n', 'o', 't', 'y']
|
三、高级用法
1.自定义cmp比较函数
1
2
3
4
5
6
7
8
9
10
11
12
13
|
def comp(x, y):
if x < y:
return 1
elif x > y:
return - 1
else :
return 0
nums = [ 3 , 2 , 8 , 0 , 1 ]
nums.sort(comp)
print nums # 降序排序[8, 3, 2, 1, 0]
nums.sort( cmp ) # 调用内建函数cmp ,升序排序
print nums # 降序排序[0, 1, 2, 3, 8]
|
2.自定义key和reverse
1.reverse实现降序排序,需要提供一个布尔值,默认为False(升序排列)。
2.key在使用时必须提供一个排序过程总调用的函数:
1
2
3
4
5
|
alist = [( '2' , '3' , '10' ), ( '1' , '2' , '3' ), ( '5' , '6' , '7' ), ( '2' , '5' , '10' ), ( '2' , '4' , '10' )]
# 多级排序,先按照第3个元素排序,然后按照第2个元素排序:
print sorted (alist, cmp = None , key = lambda x:( int (x[ 2 ]), int (x[ 1 ])), reverse = False )
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[( '1' , '2' , '3' ), ( '5' , '6' , '7' ), ( '2' , '3' , '10' ), ( '2' , '4' , '10' ), ( '2' , '5' , '10' )]
|
四、operator.itemgetter函数
operator模块提供的itemgetter函数用于获取对象的哪些维的数据,参数为一些序号(即需要获取的数据在对象中的序号),下面看例子。
1
2
3
4
5
6
7
|
a = [ 1 , 2 , 3 ]
>>> b = operator.itemgetter( 1 ) / / 定义函数b,获取对象的第 1 个域的值
>>> b(a)
2
>>> b = operator.itemgetter( 1 , 0 ) / / 定义函数b,获取对象的第 1 个域和第 0 个的值
>>> b(a)
( 2 , 1 )
|
要注意,operator.itemgetter函数获取的不是值,而是定义了一个函数,通过该函数作用到对象上才能获取值。
itemgetter在sort中的用法:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
from operator import itemgetter
alist = [( '2' , '3' , '10' ), ( '1' , '2' , '3' ), ( '5' , '6' , '7' ), ( '2' , '5' , '10' ), ( '2' , '4' , '10' )]
# 多级排序,先按照第3个元素排序,然后按照第2个元素排序:
print sorted (alist, cmp = None , key = itemgetter( 2 , 1 ), reverse = False )
print sorted (alist, cmp = None , key = lambda x:itemgetter( 2 , 1 )(x), reverse = False )
print sorted (alist, cmp = None , key = lambda x: map ( int , itemgetter( 2 , 1 )(x)), reverse = False )
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[( '2' , '3' , '10' ), ( '2' , '4' , '10' ), ( '2' , '5' , '10' ), ( '1' , '2' , '3' ), ( '5' , '6' , '7' )]
[( '2' , '3' , '10' ), ( '2' , '4' , '10' ), ( '2' , '5' , '10' ), ( '1' , '2' , '3' ), ( '5' , '6' , '7' )]
[( '1' , '2' , '3' ), ( '5' , '6' , '7' ), ( '2' , '3' , '10' ), ( '2' , '4' , '10' ), ( '2' , '5' , '10' )]
|
python的sort函数相关推荐
- python中sort函数是什么意思_python中sort和sorted函数
在学习python的过程中,感觉python中的排序相和c++中的泛型算法还是比较相似的,但相对于c++而言更加简单易用. python中列表的内置函数sort()可以对列表中的元素进行排序,而全局性 ...
- python中sort函数源代码_Python中sort和sorted函数代码解析
Python中sort和sorted函数代码解析 本文研究的主要是Python中sort和sorted函数的相关内容,具体如下. 一.sort函数 sort函数是序列的内部函数 函数原型: L.sor ...
- Python 列表sort函数
文章目录 简介 一.语法 二.演示 1.基本用法 2.有参用法 总结 简介 Python和Java等编程语言一样,提供了一种自动排序的方法,Java中是Arrays.sort()方法,而Python中 ...
- python 使用sort()函数和正则表达式(lambda)对os.listdir()获取的文件夹文件列表进行重新排序 乱序排序
# 排序函数,对文件列表进行排序 # 排序函数,对文件列表进行排序(filenames为文件夹文件的文件名的字符串列表) def sort_filenames(filenames):# (1)可以以l ...
- python中sort函数字符串_python中的sort方法使用详解
< Python树莓派编程>--3.3 Python入门 本节书摘来自华章出版社<Python树莓派编程>一书中的第3章,第3.3节,作者:[美]沃尔弗拉姆·多纳特(Wolfr ...
- Python之sort()函数详解
#从小到大排列 print(sorted([36, 5, -12, 9, -21]))#将待排序的值放入到key中的函数中,在进行比较排序 print(sorted([36, 5, -12, 9, - ...
- python中sorted函数的用法_Python3 中sorted() 函数的用法
描述 sorted() 函数对所有可迭代的对象进行排序操作. 语法 sorted(iterable, key=None, reverse=False) iterable – 可迭代对象. key – ...
- python sort函数返回值_lambda函数与箭头函数在集合内置函数应用中的对照学习
Python语言中有一个定义轻量级规则的lambda函数,其语法格式为: Lambda 参数列表:返回值表达式 简单的例子如:定义func=lambda x,y:x+y,则调用func(10,20)的 ...
- python sort函数时间复杂度_STL用法及其时间复杂度分析
STL是C++语言中一个非常实用的代码库,叫做标准模板库,通常我们使用这个头文件即可导入STL.本文立足与C++,但是python其实也是大同小异. set set正如其名,表示的是一个集合,其分为两 ...
最新文章
- 机器学习从入门到精通系列之BP神经网络理论知识详解
- libcoredb.class.php,ThinkPHP/Lib/Core/Db.class.php中pdo处理逻辑似乎不完善,导致config中pdo配置失效...
- MarkDown 中使用 LaTeX 数学式
- pcb成型板aoi检测_通过自动光学检测(AOI)实现PCB高速检测
- Maven学习(1) - Maven入门
- VS2008远程调试简介
- caffe安装系列——综述
- JAVA 对 海康SDK二次开发
- python量化选股_python量化选股策略
- Win10如何玩Win7自带的游戏
- hget和get redis_redis使用手册-hset,hget 和 hmset,hmget
- JAVA跑步计时器app_锻炼计时器app
- 笔记本window7安装虚拟机centos7后通过笔记本无线网卡上网
- VBA 禁止在某个sheet中使用键盘Delete键
- android exo解码问题,android – exoplayer-自动更改质量不起作用(hls)
- docker学习5-docker安装tomcat环境和部署war包
- Mysql中B树与B+树的区别
- Java 获取cron表达式的下次执行时间
- 网络视频教程(共57个)全实战过程
- Js——ScrollTop、ScrollHeight、ClientHeight、OffsetHeight汇总
热门文章
- 六、MySQL 数据库练习题1(包含前5章练习题目及答案)
- 用python做算法需要哪些技能_成为一名CV算法工程师,你需要具备哪些能力?
- 二维插值-MATLAB
- pfx证书导入方式,步骤流程
- 哪一层提供了数据加密的功能?
- Pytorch中KL loss
- Visual C++实现推箱子游戏的核心算法设计与实现(附源码和和资源)
- Linux管道命令(pipe)
- PyQt5数据库开发2 5.1 QSqlQueryModel
- vue cli可视化面板运行serve报错:Error: Package exports for ‘D:\*******(路径)\node_modules\colorette‘ do not defi