您现在的位置是:首页 > 文章详情

Python之利用reduce函数求序列的最值及排序

日期:2018-04-25点击:351

在一般讲述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://yq.aliyun.com/articles/615213
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章