· sorted():该函数第一个参数iterable为任意可以迭代的对象,key是用于比较的关键字,reverse表示排序结果是否反转。

· L.sort():该函数的三个参数和 sorted() 的后三个参数含义是一致的,而需要特别注意的是,该函数只适用于列表,而非任意可以迭代的对象。

让我们通过示例看一下:

L.sort()

A = [3,6,1,5,4,2]
A.sort()
print(A)
#输出: [1, 2, 3, 4, 5, 6] #这里需要注意的一点是,调用 L.sort() 完成排序后,改变了要排序的列表的结构, 即排序后A为[1, 2, 3, 4, 5, 6]。
#我们可以指定关键字排序,比如: student = [['Tom', 'A', 20], ['Jack', 'C', 18], ['Andy', 'B', 11],['Andy1', 'A', 11]]
student.sort(key=lambda student: (student[2],student[1]),reverse=True)
print(student)
#学生列表中包含列表,每个列表是学生的姓名、成绩以及年龄,排序过程中指定了key为学生的年龄,所以排序的结果为: #输出:
[['Tom', 'A', 20], ['Jack', 'C', 18], ['Andy', 'B', 11], ['Andy1', 'A', 11]]

sorted()

sorted()可以应用于任意的可以迭代的对象,所以应用范围比L.sort() 广泛的多,可以应用于字符串,元组,列表,字典等可迭代对象。

print("----------------")

B = 'Python'
S=sorted(B)
print(S) print("----------------") C = (3, 6, 1, 5, 4, 2)
S=sorted(C)
print(S)
print("----------------") E = {'1': 'a', '2': 'b', '0': 'c'}
S=sorted(E.items())
print(S) #输出: ----------------
['P', 'h', 'n', 'o', 't', 'y'] ----------------
[1, 2, 3, 4, 5, 6] ----------------
[('0', 'c'), ('1', 'a'), ('2', 'b')]

需要注意的是,该函数会返回一个排序后的列表,原有可迭代对象保持不变,这与 L.sort() 函数不同。然而,这会浪费较大的存储空间,尤其是数据量较大时。所以,在列表进行排序时,需要考虑是否需要保存原列表,如果无需保存原列表,则优先使用L.sort() 节省内存空间,提高效率。

有的排序可能需要根据两个关键字,常用的比如单词的排序,第一个字母相同然后根据第二个字母排序,Python中的 sorted() 函数是否支持这种实现呢?答案是肯定的,再设置 key 时指定多个属性即可。

L = ['cat', 'binary', 'big', 'dog']
print (sorted(L, key=lambda x: (x[0], x[1], x[2]))) #输出: [('0', 'c'), ('1', 'a'), ('2', 'b')]
['big', 'binary', 'cat', 'dog']

  

总结

· L.sort() 函数只适用于列表排序,而sorted()函数适用于任意可以迭代的对象排序。

· L.sort() 函数排序会改变原有的待排序列表,而sorted()函数则不会改变。所以在使用列表进行排序时,需要考虑是否需要保存原列表,如果无需保存原列表,则优先使用L.sort() 节省内存空间,提高效率。

排序函数 sort() 和 高阶函数sorted()的更多相关文章

  1. Kotlin的高阶函数和常用高阶函数

    Kotlin的高阶函数和常用高阶函数 文章来源:企鹅号 - Android先生 高阶函数的定义 将函数当做参数或者是返回值的函数 什么是高阶函数 可以看看我们常用的 函数: 首先我们可以知道, 是 的 ...

  2. 『无为则无心』Python函数 — 33、高阶函数

    目录 1.高阶函数的定义 2.体验高阶函数 3.内置高阶函数 (1)map()函数 (2)reduce()函数 (3)filter()函数 1.高阶函数的定义 把函数作为参数传入(把一个函数作为另外一 ...

  3. Python 基础之匿名函数 迭代器和高阶函数

    一.匿名函数 lambda表达式 用一句话来表达只有返回值的函数,叫匿名函数特点:简洁方便语法:lambda 参数: 返回值 1.不带有参数的lambda表达式 def func():    retu ...

  4. python 把函数作为参数 ---高阶函数

    把函数作为参数 在2.1小节中,我们讲了高阶函数的概念,并编写了一个简单的高阶函数: def add(x, y, f): return f(x) + f(y) 如果传入abs作为参数f的值: add( ...

  5. python--函数式编程 (高阶函数(map , reduce ,filter,sorted),匿名函数(lambda))

    1.1函数式编程 面向过程编程:我们通过把大段代码拆成函数,通过一层一层的函数,可以把复杂的任务分解成简单的任务,这种一步一步的分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计的基本单元. ...

  6. JavaScript高阶函数 map reduce filter sort

    本文是笔者在看廖雪峰老师JavaScript教程时的个人总结 高阶函数            一个函数就接收另一个函数作为参数,这种函数就称之为高阶函数          1.高阶函数之map:   ...

  7. js基础--高阶函数(map,reduce,filter,sort)

    高阶函数 一个函数可以接收另一个函数作为参数,这种函数就称之为高阶函数,编写高阶函数,就是让函数的参数能够接收别的函数. function add (x,y,f){return f(x)+f(y)} ...

  8. Python进阶:函数式编程(高阶函数,map,reduce,filter,sorted,返回函数,匿名函数,偏函数)...啊啊啊

    函数式编程 函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计 ...

  9. (转)Python进阶:函数式编程(高阶函数,map,reduce,filter,sorted,返回函数,匿名函数,偏函数)

    原文:https://www.cnblogs.com/chenwolong/p/reduce.html 函数式编程 函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数 ...

随机推荐

  1. 使用串口安装centos操作系统

    https://linuxconfig.org/how-to-force-text-mode-installation-of-redhat-linux https://www.centos.org/f ...

  2. Linux初次修改环境变量

    对于刚刚从windows系统跳到Linux的小白们,相信多少都会出现一些强迫症,希望能将Linux的Terminal能调出点色彩,让其好看些.之前自己也不知道怎么按着百度的教程操作完成的,直到组里新来 ...

  3. 如何配置nginx屏蔽恶意域名解析指向《包含隐藏nginx版本号》

    恶意域名指向: 比如,有一个垃圾域名将解析指向到了你们服务器的IP,一般多一个解析可能不会有什么问题,但是现在全民备案时期,可能你的运营商会联系你,说你们的域名没备案,可能会封你们的80端口,然后会导 ...

  4. ASCII,Unicode 和 UTF-8

    ASCII: 英文的编码方式,规定了128个字符的编码,使用了一个字节的后七位表示. Unicode : 每个国家的字符集都不同,世界上所有的字符远远超过128个.Unicode,就是一种所有符号的编 ...

  5. Codeforces Round #436 (Div. 2)D. Make a Permutation! 模拟

    D. Make a Permutation! time limit per test: 2 seconds memory limit per test: 256 megabytes input: st ...

  6. 堆&栈的理解(转)

    (摘自:http://www.cnblogs.com/likwo/archive/2010/12/20/1911026.html) C++中堆和栈的理解 内存分配方面: 堆: 操作系统有一个记录空闲内 ...

  7. mysql安装完启动问题解决

    一.初始化报错问题: 1./usr/local/mysql/bin/mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/usr/loca ...

  8. Redis学习笔记:与SpringBoot结合使用

    首先需要在pom文件中导入相应的Redis依赖(版本可以会变化,下面坐标也可能会变化) <dependency> <groupId>org.springframework.bo ...

  9. .net数据库实现Excel的导入与导出

    .net数据库实现Excel的导入与导出 参考路径:https://www.cnblogs.com/splendidme/archive/2012/01/05/2313314.html 1.defau ...

  10. C#数据同步中基本步骤和用到的相关函数

    C#数据同步中基本步骤和用到的相关函数 数据同步对比步骤: 1.将两数据库中对应的数据表分别生成XML文件 /// <summary> /// 将一个DataTable以xml方式存入指定 ...