Python之利用reduce函数求序列的最值及排序
在一般将Python的reduce函数的例子中,通常都是拿列表求和来作为例子。那么,是否还有其他例子呢?
本次分享将讲述如何利用Python中的reduce函数对序列求最值以及排序。
我们用reduce函数对序列求最值的想法建立在冒泡排序的算法上。先上例子?
from functools import reduce
from random import randint
A = [randint(1, 100) for _ in range(10)]
print('The origin list A is %s'%A)
f = lambda x,y: x if x>y else y
print('max of list A is %s.'%reduce(f,A))
print(reduce(f, A) == max(A))
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
在上述代码中,列表A是一个含有10个元素的列表,里面的元素是1到100内的随机整数。f是lambda函数,用于求两个数的最大值。根据reduce函数的运行原理,reduce(f, A)先会求出A中第一个和第二个元素的最大值,然后将这个最大值与第三个元素比较,返回两者中的最大值,这个最大值也是前三个元素的最大值,以此类推,我们最后得到的结果reduce(f, A)就是整个列表A中的最大值。
将上述代码中的lambda函数中的>号改为<号就能求得A的最小值。
在此基础上,我们再次利用冒泡排序的算法,对整个列表进行排序。具体的算法是:先用reduce函数求出整个列表的最大值,再用reduce函数求出整个列表去掉该最大值后的剩下元素中的最大值,以此类推,就能对整个列表进行排序了。代码如下:
from functools import reduce
from random import randint
A = [randint(1,www.cnzhaotai.com 100) for _www.leyouzaixan.cn in range(10)]
print('The origin list A is %s'%A)
B = []
while(A):
t = reduce(lambda x,y:www.yongshiyule.cn x if x>y else y, A)
B.append(t)
A.remove(t)
print('The sorted www.120xh.cn list is %s'%B)
输出结果如下:
The origin list A is [27, 64, 81, 14, 18, 16, 66, 24, 43, 91]
The sorted list is [91, 81, 66, 64, 43, 27, 24, 18, 16, 14]
本次分享到此结束,欢迎大家交流~~
Python之利用reduce函数求序列的最值及排序的更多相关文章
- Python实现利用最大公约数求三个正整数的最小公倍数示例
Python实现利用最大公约数求三个正整数的最小公倍数示例 本文实例讲述了Python实现利用最大公约数求三个正整数的最小公倍数.分享给大家供大家参考,具体如下: 在求解两个数的小公倍数的方法时,假设 ...
- Python lambda和reduce函数
看到一篇博文写lambda和reduce函数.笔者小痒了一下,用Python实现一下: #! /usr/bin/env python # -*-coding:utf-8-*- import time ...
- Python 3里,reduce()函数已经被从全局名字空间里移除了,它现在被放置在fucntools模块里
reduce函数:在Python 3里,reduce()函数已经被从全局名字空间里移除了,它现在被放置在fucntools模块里 用的话要 先引入:>>> from functool ...
- YTU 2706: 编写一个函数求最大的n值
2706: 编写一个函数求最大的n 值. 时间限制: 1 Sec 内存限制: 128 MB 提交: 341 解决: 132 题目描述 编写一个函数求满足以下条件的最大的n.:12+22+32+-+ ...
- python Map()和reduce()函数
Map()和reduce()函数 map() 会根据提供的函数对指定序列做映射. 第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函 ...
- Python map,filter,reduce函数
# -*- coding:utf-8 -*- #定义一个自己的map函数list_list = [1,2,4,8,16] def my_map(func,iterable): my_list = [] ...
- python里使用reduce()函数
reduce()函数在库functools里,如果要使用它,要从这个库里导入.reduce函数与map函数有不一样地方,map操作是并行操作,reduce函数是把多个参数合并的操作,也就是从多个条件简 ...
- Python中的reduce()函数
reduce()函数也是Python内置的一个高阶函数.reduce()函数接收的参数和 map()类似,一个函数 f,一个list,但行为和 map()不同,reduce()传入的函数 f 必须接收 ...
- python中filter(),reduce()函数
filter()函数 是 Python 内置的另一个有用的高阶函数,filter()函数接收一个函数 和一个list,这个函数的作用是对每个元素进行判断,返回 True或 False,filter() ...
随机推荐
- SpringMVC+Mybatis框架搭建
一.新建javaweb项目,并建好相应的包结构 二.添加项目jar到lib目录下 三.在config包中新建配置文件 sping-mvc.xml,内容如下: <?xml version=&quo ...
- gvim编码配置知识
配置 .vimrc 解决 Vim / gVim 在中文 Windows 下的字符编码问题 Vim / gVim 在中文 Windows 下的字符编码有两个问题: 默认没有编码检测功能 如果一个 ...
- CentOs安装Mysql和配置初始密码
mysql官网yum安装教程,地址:https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/#repo-qg-yum-fresh-install ...
- 「LibreOJ#515」贪心只能过样例 (暴力+bitset)
可以发现,答案最大值只有106,于是想到用暴力维护 可以用bitset合并方案可以优化复杂度, Code #include <cstdio> #include <bitset> ...
- UVA 1593 Alignment of Code(紫书习题5-1 字符串流)
You are working in a team that writes Incredibly Customizable Programming Codewriter (ICPC) which is ...
- 20145202马超《JAVA》预备作业3
虚拟机的安装[http://www.cnblogs.com/tuolemi/p/5861062.html] Linux命令[http://www.cnblogs.com/tuolemi/p/58781 ...
- 1.使用pycharm搭建开发调试环境【转】
感谢 feigamesnb 第一步:安装python2.7环境 去https://www.python.org/downloads/下载windows版本的python,选择2.7版本,按提示安装,并 ...
- 15 GIL 全局解释器锁 C语言解决 top ps
1.GIL 全局解释器锁:保证同一时刻只有一个线程在运行. 什么是全局解释器锁GIL(Global Interpreter Lock) Python代码的执行由Python 虚拟机(也叫解释器主循环, ...
- LeetCode:7. Reverse Integer(Easy)
题目要求:将给出的整数进行逆序输出 注意:整数的最大范围-2147483648-2147483647,当翻转后的数超出范围后返回0 思路:对给出的整数除以10,取余和取整:然后对取整部分继续取余和取整 ...
- 「暑期训练」「Brute Force」 Restoring Painting (CFR353D2B)
题意 给定一定条件,问符合的矩阵有几种. 分析 见了鬼了,这破题谁加的brute force的标签,素质极差.因为范围是1e5,那你平方(枚举算法)的复杂度必然爆. 然后你就会思考其中奥妙无穷的数学规 ...