文档章节

列表的sort()和sorted()方法

o
 osc_isezqdgg
发布于 2019/09/18 16:51
字数 861
阅读 7
收藏 0

精选30+云产品,助力企业轻松上云!>>>

sort()与sorted()的不同在于,sort是在原位重新排列列表,而sorted()是产生一个新的列表。

sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。

注:sorted不是列表方法。

1.sort()方法

sort函数的原型

  sort(key=None, reverse=False)

  key 可指定一些规则,可以是k=int, k =len , k=function函数

  reverse 默认值是False

  可以给它赋值成True,那就是反向排序

简单的列表排序

l = [1,7,4,9,2,3,5,0,8,6]
l.sort()
print(l)
结果:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

#类表中嵌套其他数据类型,如字典

# a = [{'id':1,'name':'小明'},{'id':3,'name':'小红'},{'id':2,'name':'老王'}]
# 根据字典的key值id进行降序排序并输出排序后的列表。

def function(date):
    print(date)
    print(date['id'])
    return date['id']
a.sort(key=function)
print(a)
#结果:[{'id': 1, 'name': '小明'}, {'id': 2, 'name': '老王'}, {'id': 3, 'name': '小红'}]


##################简化版#################

a.sort(key=lambda keys: keys['id'])
print(a)


s = sorted(a, key=lambda keys: keys['id'])
print(s)

按照字符串排序

StrList = ['fb', 'bx', 'csw', 'qb', 'qqa', 'eeeed']
# 一般字典序排列,但是大写在前,小写在后!!
StrList.sort()
print(StrList) ##字符串列表是按照第一个字符的大小排序的
##输出:['Fast', 'Smooth', 'fast', 'is', 'is', 'smooth']

#忽略大小写,按abcd顺序
StrList.sort(key=str.lower)
print(StrList) ##输出:['Fast', 'fast', 'is', 'is', 'Smooth', 'smooth']

#按照字符串长度排序
StrList.sort(key=len)
print(StrList)##输出:['is', 'is', 'fast', 'Fast', 'Smooth', 'smooth']

StrList.sort(key=len, reverse=True)#反序
print(StrList) ##输出:['Smooth', 'smooth', 'fast', 'Fast', 'is', 'is']

eg:

假设用元组保存每一个学生的信息,包括学号,姓名,年龄。用列表保存所有学生的信息。
 list1=[(8, 'Logan', 20), (2, 'Mike', 22), (5, 'Lucy', 19)]
 list1.sort()
list1
[(2, 'Mike', 22), (5, 'Lucy', 19), (8, 'Logan', 20)]

 list1=[(8, 'Logan', 20), (2, 'Mike', 22), (5, 'Lucy', 19)]
 sorted(list1)
[(2, 'Mike', 22), (5, 'Lucy', 19), (8, 'Logan', 20)]
 list1
[(8, 'Logan', 20), (2, 'Mike', 22), (5, 'Lucy', 19)]

小结:
由示例可以看出,当列表由list(或者tuple)组成时,默认情况下,sort和sorted都会根据list[0](或者tuple[0])作为排序的key,进行排序。
以上都是默认的排序方式,我们可以编写代码控制两个函数的排序行为。主要有三种方式:基于key函数;基于cmp函数和基于reverse函数

  

2.sorted()方法

  返回一个新列表,其中包含按升序排列的iterable中的所有项。可以提供自定义键函数来自定义排序顺序,以及可以将反转标志设置为按降序请求结果。

*****

 sorted(L)返回一个排序后的L,不改变原始的L;

L.sort()是对原始的L进行操作,调用后原始的L会改变,没有返回值。【所以a = a.sort()是错的啦!a = sorted(a)才对!

sorted()适用于任何可迭代容器,list.sort()仅支持list(本身就是list的一个方法)

*****

# a = [{'id':1,'name':'小明'},{'id':3,'name':'小红'},{'id':2,'name':'老王'}]
# 根据字典的key值id进行降序排序并输出排序后的列表。

a = [{'id':1,'name':'小明'},{'id':3,'name':'小红'},{'id':2,'name':'老王'}]

s=sorted(a, key=lambda keys: keys['id'])
print(s)
print(a)

对于同样一个无序的列表a,调用sorted(a),对a进行排序后返回一个新的列表,而对a不产生影响。

对于一个无序的列表a,调用a.sort(),对a进行排序后返回a,sort()函数修改待排序的列表内容。

  

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
Python列表排序方法reverse、sort、sorted详解

python语言中的列表排序方法有三个:reverse反转/倒序排序、sort正序排序、sorted可以获取排序后的列表。在更高级列表排序中,后两中方法还可以加入条件参数进行排序。 reverse()方法 将列表...

osc_nhwfplmt
2019/10/11
3
0
python中sorted方法和列表的sort方法

sort 与 sorted 区别: sort 是应用在 list 上的方法,属于列表的成员方法,sorted 可以对所有可迭代的对象进行排序操作。 list 的 sort 方法返回的是对已经存在的列表进行操作,而内建函数 ...

osc_h67eqfa6
2019/07/19
2
0
Python列表排序 reverse、sort、sorted 操作方法详解

python语言中的列表排序方法有三个:reverse反转/倒序排序、sort正序排序、sorted可以获取排序后的列表。在更高级列表排序中,后两中方法还可以加入条件参数进行排序。 reverse()方法 将列表...

楠木楠
2016/07/14
21
0
Python中 字典排序、列表排序

一、字典排序 在程序中使用字典进行数据信息统计时,由于字典是无序的所以打印字典时内容也是无序的。因此,为了使统计得到的结果更方便查看需要进行排序。Python中字典的排序分为按“键”排...

oanyt
2015/07/22
0
0
Python中 字典排序、列表排序

一、字典排序 在程序中使用字典进行数据信息统计时,由于字典是无序的所以打印字典时内容也是无序的。因此,为了使统计得到的结果更方便查看需要进行排序。Python中字典的排序分为按“键”排...

oanyt
2015/07/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

写技术博客的一些心得体会

目录 1. 是什么 2. 为什么 2.1. 优秀的学习方法 2.2. 知识的备份 2.3. 体系的形成 2.4. 知识的交流 2.5. 写作能力和思维能力 3. 怎么做 1. 是什么 不知不觉已经写了近百篇技术博文了,其实在...

osc_873fteab
3分钟前
0
0
android组件间共享数据的常用方法

使用Intent在激活组件的时候携带数据,以进行数据的传递 使用广播进行组件间数据的伟递 使用外部存储(sharedPreference,文件,数据库,网络)进行组件间数据共享 使用Static静态成员进行数...

osc_sdnu59mg
5分钟前
0
0
Chrome浏览器的插件扩展默认安装目录

1:打开谷歌浏览器在地址栏输入:chrome://version 并回车 2:如上图个人资料路径,该路径下的Extensions文件夹即默认的插件安装目录:

osc_zg8wy3xa
6分钟前
0
0
知识圈APP开发记录(二十一)

今日完成:新增学习情况概览功能 花费时间:4小时 剩余时间:2小时 遇到问题:图标刷新时X轴成倍数刷新(已解决) 部分代码截图: 明日将完成:个性化模块及其附属功能测试

osc_bodzcw38
7分钟前
0
0
在做python大作业自己设计学生信息管理的增删改查操作遇到的问题

数据库的创建 conn = sqlite3.connect('student1.db') """ #在该数据库下创建学生信息表 conn.execute ('''CREATE TABLE StudentTable( ID INTEGER PRIMARY KEY AUTOINCREMENT, StuId INTEGE......

osc_7dwwmolq
9分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部