Ada*_*kin 37 python functional-programming
有一个由Guido写自己半著名的文章暗示,reduce()应该去渡渡鸟的方式,离开了语言.它甚至被降级为Python 3中的顶级函数(而不是填入functools模块中).
对于许多其他功能性编程主食(地图等),可以使用常见的明确替代方案.例如,大多数时候a map()更好地写为列表理解.
我想知道的是,如果有一个类似的"更多pythonic"替代reduce函数.我有一些函数式编程背景(特别是ML),所以reduce()在考虑解决方案时常常会浮现在脑海中,但是如果有更好的方法来实现它们(没有将reduce调用展开到for循环中)我'我想知道.
Sve*_*ach 28
正如Guido的链接文章所说,如果你想避免,你应该只写一个明确的for循环reduce().你可以更换线路
result = reduce(function, iterable, start)
Run Code Online (Sandbox Code Playgroud)
通过
result = start
for x in iterable:
result = function(result, x)
Run Code Online (Sandbox Code Playgroud)
我想知道的是,是否有一个类似的“更 Pythonic”的替代 reduce 函数。
是和否。这取决于用例。
在链接的文章中,Guido 建议大多数但不是所有的减少都应该写成循环。他认为reduce适用的情况有限。
所以在我看来,reduce() 的适用性几乎仅限于关联运算符,在所有其他情况下,最好明确写出累加循环。
没有很多关联运算符。(那些是运算符 X,其中 (a X b) X c 等于 a X (b X c)。)我认为它仅限于 +、*、&、|、^ 和快捷方式和/或。
| 归档时间: |
|
| 查看次数: |
9198 次 |
| 最近记录: |