给定一个集合,其中每个元素都是一个字符串,如何将集合缩减为一个整数,即这些字符串的长度之和?
setA = ("hi", "hello", "bye")
reduce(lambda .... for word in setA)
使用一些 lambda 函数调用 reduce 应该返回 10 (2 + 5 + 3)。
我想我可以用几个 lambdas 来做到这一点,但必须有一种更清洁的方法。
给定一个集合,其中每个元素都是一个字符串,如何将集合缩减为一个整数,即这些字符串的长度之和?
setA = ("hi", "hello", "bye")
reduce(lambda .... for word in setA)
使用一些 lambda 函数调用 reduce 应该返回 10 (2 + 5 + 3)。
我想我可以用几个 lambdas 来做到这一点,但必须有一种更清洁的方法。
干得好:
sum(map(len, setA))
In [4]: reduce(lambda x, y: x+y , map(lambda x: len(x), setA))
Out[4]: 10
如果你真的想用lambda
and做到这一点reduce
,你可以:
reduce(lambda x, y: x + len(y), s, 0)
但我不确定你为什么reduce
要从 0 开始而不是仅仅使用sum
,在这种情况下你的 lambda 是 just lambda y: len(y)
,相当于 just len
。