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))
在上述代码中,列表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, 100) for _ in range(10)] print('The origin list A is %s'%A) B = [] while(A): t = reduce(lambda x,y: x if x>y else y, A) B.append(t) A.remove(t) print('The sorted 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]
本次分享到此结束,欢迎大家交流~~
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
redis 集群环境搭建
redis 集群环境搭建 Redis集群部署文档(centos7系统) (要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个主节点,三个从节点,对应的redis节点的ip和端口对应关系如下) 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 1:下载redis。官网下载3.0.0版本,之前2.几的版本不支持集群模式 下载地址:https://github.com/antirez/redis/archive/3.0.0-rc2.tar.gz 2:上传服务器,解压,编译 tar-zxvfredis-3.0.0-rc2.tar.gz mvredis-3.0.0-rc2.tar.gzredis3.0 cd/usr/local/redis3.0 make makeinstall 3:创建集群需要的目录 mkdir-p/usr.local/cluster cd/usr.local/cluster mkdir7000 mkdir7001 m...
- 下一篇
Linux 安装JDK完整步骤
Linux安装JDK完整步骤 1、检查一下系统中的jdk版本 [root@localhost software]# java -version 显示: openjdk version"1.8.0_102"OpenJDK Runtime Environment (build 1.8.0_102-b14) OpenJDK 64-Bit Server VM (build 25.102-b14, mixed mode) 2、检测jdk安装包 [root@localhost software]# rpm -qa | grep java 显示: java-1.7.0-openjdk-1.7.0.111-2.6.7.8.el7.x86_64 python-javapackages-3.4.1-11.el7.noarch tzdata-java-2016g-2.el7.noarch javapackages-tools-3.4.1-11.el7.noarch java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64 java-1.8.0-openjdk-headles...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Mario游戏-低调大师作品
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS8编译安装MySQL8.0.19
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS8安装Docker,最新的服务器搭配容器使用