排序算法

  Python内置的sorted()函数可以对list进行排序

>>> sorted([36,5,-12,9,-21])
[-21, -12, 5, 9, 36]

  此外,sorted也是一个高阶函数,它还可以接收一个key函数来实现自定义排序,例如按绝对值大小排序

>>> sorted([36,5,-12,9,-21],key=abs)
[5, 9, -12, -21, 36]

  key指定的函数将作用于list的每一个元素上,并根据返回的结果进行排序

list=[36,5,-12,9,21]
keys=[36,5,12,9,21]

  然后sorted()函数按照keys进行排序,并按照对应关系返回list相应的元素

keys排序结果 => [5, 9,  12,  21, 36]
| | | | |
最终结果 => [5, 9, -12, -21, 36]

  字符串排序的例子

>>> sorted(['bob','about','Zoo','Credit'])
['Credit', 'Zoo', 'about', 'bob']

  默认情况下,对于字符串的排序,是安装ASCII大小比较的,由于'Z'<'a'所以,大写字母在前

  现在要忽略大小写按照字母排序,加一个函数要不把大写变成小写,要不把小写变成大写排序

>>> sorted(['bob','about','Zoo','Credit'],key=str.lower)
['about', 'bob', 'Credit', 'Zoo']

  把str.lower方法依次作用于列表

list=['bob','about','Zoo','Credit']
keys=[str.lower('bob'),str.lower('about'),str.lower('Zoo'),str.lower('Credit')]
keys=['bob','about','zoo','credit']
最终排序结果['about','bob','Credit','Zoo']

  

  练习:用一组tuple表示学生名字和成绩,用sorted()对上述列表分别按名字及成绩排序

L=[('Bob',75),('Adam',92),('Bart',66),('Lisa',88)]
#函数返回第一个元素名字
def by_name(t):
m=t[0]
return m #函数返回第二个元素成绩
def by_score(t):
n=t[1]
return n L1=sorted(L,key=by_name)
L2=sorted(L,key=by_score,reverse=True)
print(L1)
print(L2)

  输出,按名字及成绩倒序排序

[('Adam', 92), ('Bart', 66), ('Bob', 75), ('Lisa', 88)]
[('Adam', 92), ('Lisa', 88), ('Bob', 75), ('Bart', 66)]

  

Python3之高阶函数sorted的更多相关文章

  1. python高阶函数sorted

    原文 排序也是在程序中经常用到的算法.无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小.如果是数字,我们可以直接比较,但如果是字符串或者两个dict呢?直接比较数学上的大小是没有意义的,因 ...

  2. python高阶函数——sorted排序算法

    python 内置的sorted()函数可以对一个list进行排序: >>> sorted([8,3,8,11,-2]) [-2, 3, 8, 8, 11] 既然说是高阶函数,那么它 ...

  3. python学习笔记1 -- 函数式编程之高阶函数 sorted排序

    python提供了很强大的内置排序函数,妈妈再也不担心我不会写冒泡排序了呀,sorted函数就是这个排序函数,该函数参数准确的说有四个,sorted(参数1,参数2,参数3,参数4). 参数1 是需要 ...

  4. 排序函数 sort() 和 高阶函数sorted()

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

  5. Python3之高阶函数filter

    Python内建的filter()函数用于过滤序列 和map()一样,filter()也接收一个函数和一个序列.和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是T ...

  6. python3笔记十六:python匿名函数和高阶函数

    一:学习内容 lambda函数 map函数与reduce函数 filter函数 sorted函数 二:匿名函数-lambda 1.概念:不使用def这样的语句去定义函数,使用lambda来创建匿名函数 ...

  7. 高阶函数,柯里化,sort排序

    高阶函数概念 first class object:     函数在python中时一等公民.     函数也是对象,可调用的对象.     函数可以作为普通变量,参数,返回值等等. 高阶函数:    ...

  8. python 高阶函数、柯里化

    高阶函数 First Class Object 函数在python中是一等公民 函数也是对象,可调用的对象 函数可作为普通变量.参数.返回值等等 高阶函数 数学概念 y=g(f(x)) 在数学和计算机 ...

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

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

随机推荐

  1. TCP服务端实现并发

    socket 在 tcp 协议下通信 客户端 import socket ​ # 创建客户端TCP协议通信 c = socket.socket() # 与指定服务端握手 c.connect(('127 ...

  2. Spring Data JPA 提供的各种Repository接口作用

    各种Repository接口继承关系: Repository : public interface UserRepository extends Repository<User, Integer ...

  3. TensorFlow(八):tensorboard可视化

    import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data from tensorflow.c ...

  4. FOI冬令营 Day1

    目录 T1.全连(fc) 传送门 Code  T2.原样输出(copy) 传送门 Code  T3.不同的缩写(diff) 传送门 Code  打算把省冬的题目放上来,主要是防止自己偷懒不订正 T1. ...

  5. OpenFOAM 中边界条件的设定【转载】

    转载自:http://blog.sina.com.cn/s/blog_a0b4201d0102v7jt.html 用习惯了FLUENT的操作界面,再使用OpenFOAM就会觉得非常繁琐.遇到的第一个问 ...

  6. 【原】Python基础-循环语句

    x = 1while x <= 10: print(x) x += 1 password = ""while password != "3213554": ...

  7. 20165223《网络对抗技术》Exp6 信息搜集与漏洞扫描

    目录 -- 信息搜集与漏洞扫描 实践说明 实践目标 基础知识问答 实践内容 各种搜索技巧的应用 Google搜索引擎扫描--Google Hacking msf搜索引擎扫描--搜索网址目录结构 搜索特 ...

  8. 胜利点 选题 Scrum立会报告+燃尽图 02

    此作业要求参见[https://edu.cnblogs.com/campus/nenu/2019fall/homework/8683] 一.小组介绍 组长:贺敬文 组员:彭思雨 王志文 位军营 杨萍 ...

  9. Windows使用Latex

    目录 安装Texlive 安装TeXstudio 编写简单的文章 教程 安装Texlive 到清华大学开源软件镜像站下载Texlive2019.iso文件 下载之后,如果有光驱就装载,没有的话就解压. ...

  10. LayUI使用弹窗重载父级数据表格的两种方法

    参考LayUI官方文档,在子窗口中重载父级数据表格找到以下两种方法: 1.子窗口中重载:在子窗口中直接调用父级talbe的reload方法. $("body").on(" ...