2024-05-14 06:15:17 发布
网友
这里有没有有用的代码在python中使用reduce()函数?除了我们在示例中看到的通常的+和*之外,还有其他代码吗?
由GvR引用Fate of reduce() in Python 3000
除了+和*之外,我还发现了它的其他用途是与和或一起使用,但现在我们有了any和all来替换那些情况。
any
all
foldl和foldr在方案中出现了很多。。。
foldl
foldr
以下是一些可爱的用法:
展开列表
目标:把[[1, 2, 3], [4, 5], [6, 7, 8]]变成[1, 2, 3, 4, 5, 6, 7, 8]。
[[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。
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:
reduce()
#!/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()使用起来太不安全):
eval()
>>> import __main__ >>> reduce(getattr, "os.path.abspath".split('.'), __main__) <function abspath at 0x009AB530>
除了+和*之外,我还发现了它的其他用途是与和或一起使用,但现在我们有了
any
和all
来替换那些情况。foldl
和foldr
在方案中出现了很多。。。以下是一些可爱的用法:
展开列表
目标:把
[[1, 2, 3], [4, 5], [6, 7, 8]]
变成[1, 2, 3, 4, 5, 6, 7, 8]
。数字到数字的列表
目标:把
[1, 2, 3, 4, 5, 6, 7, 8]
变成12345678
。丑陋,缓慢的方式:
漂亮的方式:
reduce()
可用于查找Least common multiple for 3 or more numbers:示例:
reduce()
可用于解析虚线名称(其中,eval()
使用起来太不安全):相关问题 更多 >
编程相关推荐