使用reduce()的有用代码?

2024-05-14 06:15:17 发布

您现在位置:Python中文网/ 问答频道 /正文

这里有没有有用的代码在python中使用reduce()函数?除了我们在示例中看到的通常的+和*之外,还有其他代码吗?

由GvR引用Fate of reduce() in Python 3000


Tags: of函数代码in示例reducefategvr
3条回答

除了+和*之外,我还发现了它的其他用途是与和或一起使用,但现在我们有了anyall来替换那些情况。

foldlfoldr在方案中出现了很多。。。

以下是一些可爱的用法:

展开列表

目标:把[[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(lambda a,d: 10*a+d, [1,2,3,4,5,6,7,8], 0)

reduce()可用于查找Least common multiple for 3 or more numbers

#!/usr/bin/env python
from fractions import gcd
from functools import reduce

def lcm(*args):
    return reduce(lambda a,b: a * b // gcd(a, b), args)

示例:

>>> lcm(100, 23, 98)
112700
>>> lcm(*range(1, 20))
232792560

reduce()可用于解析虚线名称(其中,eval()使用起来太不安全):

>>> import __main__
>>> reduce(getattr, "os.path.abspath".split('.'), __main__)
<function abspath at 0x009AB530>

相关问题 更多 >