摘要:我们用函数对序列求最值的想法建立在冒泡排序的算法上。在此基础上,我们再次利用冒泡排序的算法,对整个列表进行排序。
在一般将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]
本次分享到此结束,欢迎大家交流~~
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/41619.html
摘要:高阶函数实参是一个函数名函数的返回值是一个函数传递的参数包含函数名。内置高阶函数函数函数接收两个参数一个是函数一个是序列将传入的函数依次作用到序列的每个元素并把结果作为新的返回。 高阶函数 实参是一个函数名 函数的返回值是一个函数 print(abs(-10)) f = abs print(f(-10)) #传递的参数包含函数名。 def myfun(x,y,fun): ...
摘要:专题系列第八篇,讲解多种方式求数组的最大值和最小值前言取出数组中的最大值或者最小值是开发中常见的需求,但你能想出几种方法来实现这个需求呢提供了函数返回一组数中的最大值,用法是值得注意的是如果有任一参数不能被转换为数值,则结果为。 JavaScritpt 专题系列第八篇,讲解多种方式求数组的最大值和最小值 前言 取出数组中的最大值或者最小值是开发中常见的需求,但你能想出几种方法来实现这个...
摘要:当到达时等同于直接插入排序,此时序列已基本有序,所有记录在统一组内排好成有序序列。当面对大量数据时,希尔排序将比直接插入排序更具优势图示讲解第一趟取增量,所有间隔为的元素分在一组,在各个组中分别进行直接插入排序。 ...
摘要:会依次将中的数据传递到中,根据返回的或者,留下或者抛弃这个值。而对于字符串,则是根据字符串对应的码表进行排序。同时也是一个高阶函数,可以实现自定义的排序方式。 map/reduce是一种编程思想,在各个领域都有它的实践。网上有一个简单的例子解释map/reduce。比如说你需要数一下某一个图书馆中有多少本藏书。最傻瓜的做法就是排一个人从头数到尾。这样速度慢,低效。另一种方法就是先将图书...
阅读 2641·2019-08-30 15:52
阅读 3588·2019-08-29 17:02
阅读 1834·2019-08-29 13:00
阅读 910·2019-08-29 11:07
阅读 3227·2019-08-27 10:53
阅读 1760·2019-08-26 13:43
阅读 1003·2019-08-26 10:22
阅读 1306·2019-08-23 18:06