【发布时间】:2014-08-16 02:52:30
【问题描述】:
在 python 中编程时,我现在通过使用列表推导来避免map、lambda 和filter,因为它更易于阅读且执行速度更快。但是reduce也可以替换吗?
例如一个对象有一个运算符union(),它作用于另一个对象a1.union(a2),并给出第三个相同类型的对象。
我有一个对象列表:
L = [a1, a2, a3, ...]
如何将所有这些对象的 union() 与列表推导式结合起来,相当于:
result = reduce(lambda a, b :a.union(b), L[1:], L[0])
【问题讨论】:
-
在某些情况下:没有。但取决于。请提供您想到的具体查询
-
@sshashank124 - 有什么例子吗?
-
集合并集是一个不好的例子,因为你可以简单地做
result = set().union(*L),即使 L 是一个空列表,它也有工作的好处。无论如何,lambda a, b :a.union(b)可以更简洁地写成set.union,因为在 python 中obj.method(args)与cls.method(obj, args)相同 -
Guido 说要使用 for 循环而不是 reduce。他不喜欢 FP 结构。
标签: python list reduce map-function