在使用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])
result = set().union(*L)
,这样即使 L 是一个空列表也能正常工作。无论如何,lambda a, b :a.union(b)
可以更简洁地写成set.union
,因为在 Python 中,obj.method(args)
和cls.method(obj, args)
是相同的。 - Eric