python笔记18-sort和sorted区别
前言
python的排序有两个方法,一个是list对象的sort方法,另外一个是builtin函数里面sorted,主要区别:
- sort仅针对于list对象排序,无返回值, 会改变原来队列顺序
- sorted是一个单独函数,可以对可迭代(iteration)对象排序,不局限于list,它不改变原生数据,重新生成一个新的队列
本篇是基于python3.6讲解的,python2会多一个cmp参数,cmp函数在python3上已经丢弃了
cmp(x,y) 函数用于比较2个对象,如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。
sort方法
1.sort是list对象的方法,通过.sort()来调用
>>> help(list.sort)
Help on method_descriptor:
sort(...)
L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE*
>>>
2.参数说明:
key 用列表元素的某个属性或函数进行作为关键字(此函数只能有一个参数)
reverse 排序规则. reverse = True 降序 或者 reverse = False 升序,默认升序
return 无返回值
3.使用方法介绍
# coding:utf-8
a = [-9, 2, 3, -4, 5, 6, 6, 1]
# 按从小到大排序
a.sort()
print(a) # 结果:[-9, -4, 1, 2, 3, 5, 6, 6]
# 按从大到小排序
a.sort(reverse=True)
print(a) # 结果:[6, 6, 5, 3, 2, 1, -4, -9]
4.key参数接受的是函数对象,并且函数只能有一个参数,可以自己定义一个函数,也可以写个匿名函数(lambda)
# coding:utf-8
a = [-9, 2, 3, -4, 5, 6, 6, 1]
# 按绝对值排序
def f(x):
return abs(x)
a.sort(key=f)
print(a) # 结果:[1, 2, 3, -4, 5, 6, 6, -9]
# 1、list对象是字符串
b = ["hello", "helloworld", "he", "hao", "good"]
# 按list里面单词长度倒叙
b.sort(key=lambda x: len(x), reverse=True)
print(b) # 结果:['helloworld', 'hello', 'good', 'hao', 'he']
# 2、.list对象是元组
c = [("a", 9), ("b", 2), ("d", 5)]
# 按元组里面第二个数排序
c.sort(key=lambda x: x[1])
print(c) # 结果:[('b', 2), ('d', 5), ('a', 9)]
# 3、list对象是字典
d = [{"a": 9}, {"b": 2}, {"d":5}]
d.sort(key=lambda x: list(x.values())[0])
print(d) # 结果:[{'b': 2}, {'d': 5}, {'a': 9}]
sorted函数
1.sorted是python里面的一个内建函数,直接调用就行了
>>> 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.
>>>
2.参数说明
iterable 可迭代对象,如:str、list、tuple、dict都是可迭代对象(这里就不局限于list了)
key 用列表元素的某个属性或函数进行作为关键字(此函数只能有一个参数)
reverse 排序规则. reverse = True 降序或者 reverse = False 升序,默认升序
return 有返回值值,返回新的队列
3.使用方法介绍
# coding:utf-8
a = [-9, 2, 3, -4, 5, 6, 6, 1]
# 按从小到大排序
b = sorted(a)
print(a) # a不会变
print(b) # b是新的队列 [-9, -4, 1, 2, 3, 5, 6, 6]
# 按从大到小排序
c = sorted(a, reverse=True)
print(c) # 结果:[6, 6, 5, 3, 2, 1, -4, -9]
4.可迭代对象iterable都可以排序,返回结果会重新生成一个list
# coding:utf-8
# 字符串也可以排序
s = "hello world!"
d = sorted(s)
print(d) # 结果:[' ', '!', 'd', 'e', 'h', 'l', 'l', 'l', 'o', 'o', 'r', 'w']
# 元组也可以排序
t = (-9, 2, 7, 3, 5)
n = sorted(t)
print(n) # 结果:[-9, 2, 3, 5, 7]
# dict按value排序
f = {"a": 9, "b": 2, "d": 5}
g = sorted(f.items(), key=lambda x: x[1])
print(g) # 结果:[('b', 2), ('d', 5), ('a', 9)]
python自动化交流 QQ群:779429633
python笔记18-sort和sorted区别的更多相关文章
- python排序函数sort()与sorted()区别
sort是容器的函数:sort(cmp=None, key=None, reverse=False) sorted是python的内建函数:sorted(iterable, cmp=None, key ...
- sort 与 sorted 区别
sort 与 sorted 区别: sort 只是应用在 list 上的方法,(就地排序无返回值). sorted 是内建函数,可对所有可迭代的对象进行排序操作,(返回新的list). 语法 sort ...
- sort 与 sorted 区别:
sort 与 sorted 区别: sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作. list 的 sort 方法返回的是对已经存在的列表进行操作,无返回值, ...
- python中list.sort()与sorted()的区别
list.sort()和sorted()都是python的内置函数,他们都用来对序列进行排序,区别在于 list.sort()是对列表就地(in-place)排序,返回None:sorted()返回排 ...
- Python中的 sort 和 sorted
今天在做一道题时,因为忘了Python中sort和sorted的用法与区别导致程序一直报错,找了好久才知道是使用方法错误的问题!现在就大致的归纳一下sort和sorted的用法与区别 1. sort: ...
- python中的sort、sorted、reverse、reversed详解
python语言中的列表排序方法有三个:reverse反转/倒序排序.sort正序排序.sorted可以获取排序后的列表.在更高级列表排序中,后两中方法还可以加入条件参数进行排序. reverse() ...
- python中sort与sorted区别
1.sort()函数 (只对list有用) sort(...) L.sort(key = None,reverse=False) key = 函数 这个函数会从每个元素中提取一个用于比较的关键字.默认 ...
- python sort和sorted区别。
前者是方法,后者是函数.oop和opp区别的经典体现.好好领会,就能知道什么时候写类什么时候写函数好.
- python中的sort和sorted
共同点 都有三个参数, cmp用户自定义(指定函数),每个元素都会调用,效率没key高 key带一个参数的函数,用来为每个元素提取比较值 reverse=True 翻转 sort sort作用的 ...
- python list列表sort、sorted、reverse排序
列表排序:sort是修改原列表,sorted提供原列表的一个有序副本 li=[2,1,4,5,0]li.sort() #默认从小到大print li结果:[0, 1, 2, 4, 5] li=[2,1 ...
随机推荐
- HDU 2147 kiki's game(博弈图上找规律)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2147 题目大意:给你一个n*m的棋盘,初始位置为(1,m),两人轮流操作,每次只能向下,左,左下这三个 ...
- ceph rgw java sdk 使用域名访问服务时需要设置s3client的配置项 PathStyleAccess 为true, 负责将报域名异常
Caused by: java.net.UnknownHostException: my-new-bucket.s3.yyclouds.com at java.net.InetAddress.getA ...
- 完美解决wordpress邮件链接无效的问题
教程介绍:解决wordpress新用户注册邮件链接无效以及重新设置密码链接无效的问题 解决流程 案例一.用户注册 当用户注册站点时,用户会收到如下注册信: 当用户点击链接时,却发现链接无效: 仔细观察 ...
- centos7 mongodb3.4 安装
上传tgz 安装包 [root@localhost install_pack]# ll total 274840 -rw-r--r--. 1 root root 9393241 Jun 2 14:36 ...
- vs 单元测试
vs 2010 NOget 包 安装NUnitTDNet,下载TestDriven.NET(http://www.testdriven.net/). 准备动作 先到http://www.testdri ...
- Github 中提交项目到自己仓库的 gh-pages 分支
Github 中提交项目到自己仓库的gh-pages分支 cd cnblogs-theme/ git init git remote add origin git@github.com:hglibin ...
- 检测浏览器对HTML5新input类型的支持
HTML5新增加了很多input元素类型,比如color,date,datetime,datetime-local,email,month,number,range,search,tel,time,u ...
- Python编程举例-iter和next结合定制可迭代对象
class Foo: def __init__(self,n): self.n = n def __iter__(self): return self def __next__(self): if s ...
- 关于 Unity 的一些小细节,不注意可能会被“坑”一些时间。
关于 Unity 的一些小细节,不注意可能会被"坑"一些时间. 最近因为一些"小"问题,总是需要找很久的原因,总结一下 UnityEngine.Input 在使 ...
- 使用JDBC连接数据库的一些BUG
题记:前几天用JDBC连接MYSQL数据库的时候,出现了一些BUG,有代码层次的,也有设置层次的, 下面的解决方法时我目前所遇到的,后期如果还有遇到的会进行补充. 一.出现:远程mysql_java. ...