使用reduce()的有用代码?

这里有没有人有任何有用的代码在python中使用reduce()函数?除了示例中常见的+和*以外,还有其他代码吗?



拉丁的传说
浏览 183回答 4
4回答

泛舟湖上清波郎朗

除+和*之外,我为它找到的其他用途是和和或或,但现在我们有any和all来替换这些情况。foldl并foldr确实在Scheme中大放异彩...这是一些可爱的用法:整理清单目标:[[1, 2, 3], [4, 5], [6, 7, 8]]变成[1, 2, 3, 4, 5, 6, 7, 8]。reduce(list.__add__, [[1, 2, 3], [4, 5], [6, 7, 8]], [])数字列表到一个数字目标:[1, 2, 3, 4, 5, 6, 7, 8]变成12345678。丑陋,缓慢的方式:int("".join(map(str, [1,2,3,4,5,6,7,8])))漂亮的reduce方式:reduce(lambda a,d: 10*a+d, [1,2,3,4,5,6,7,8], 0)

小唯快跑啊

reduce()可用于查找3个或更多数字的最小公倍数:#!/usr/bin/env pythonfrom fractions import gcdfrom functools import reducedef lcm(*args):    return reduce(lambda a,b: a * b // gcd(a, b), args)例子:>>> lcm(100, 23, 98)112700>>> lcm(*range(1, 20))232792560

慕勒3428872

reduce()可以用来解析点名(eval()太不安全了,无法使用):>>> import __main__>>> reduce(getattr, "os.path.abspath".split('.'), __main__)<function abspath at 0x009AB530>

隔江千里

找到N个给定列表的交集:input_list = [[1, 2, 3, 4, 5], [2, 3, 4, 5, 6], [3, 4, 5, 6, 7]]result = reduce(set.intersection, map(set, input_list))返回:result = set([3, 4, 5])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python