如何使用 lambda 的 range、map、filter 和 reduce 计算可被 3 和 5 整除的数字之和
How to calculate the sum of numbers divisible by 3 and 5 using lambda's range, map, filter and reduce
我需要帮助来计算给定范围内可被 3 或 5 整除的数字之和。到目前为止,我已经做到了;
print filter(reduce(map(lambda x, y: x % 3 == 0 or y % 5 == 0, x + y, range(30))))
抛出这个错误
Traceback (most recent call last):
File "<pyshell#65>", line 1, in <module>
print filter(reduce(map(lambda x, y: x % 3 == 0 or y % 5 == 0, x + y, range(30))))
NameError: name 'x' is not defined
我认为我还没有找到解决方案,甚至还没有走上正确的轨道,所以如果有人能指出我的方向,那就太好了,干杯。
试试这个:
sum([i for i in range(1,100) if i%3==0 and i%5==0])
如果您需要一些解释,请随时询问:)
reduce(lambda x, y: x + y, filter(lambda x : x % 3 == 0 or x%5 == 0, range(11)), 0)
用b > a
定义a
和b
后:
reduce(lambda x, y: x + y, filter(lambda x: x % 3 == 0 or x % 5 == 0, range(a, b)))
你的情况:
reduce(lambda x, y: x + y, filter(lambda x: x % 3 == 0 or x % 5 == 0, range(30)))
或没有 reduce
和 filter
:
sum(x for x in range(30) if x % 3 == 0 or x % 5 == 0)
如果值的范围很大(不是 30
)你可以使用 xrange
if on python 2 这样它 returns 一个生成器而不是一个列表.
如果您确实还想包含 map
函数,您可以将其与恒等函数一起使用,如下所示:
reduce(lambda x, y: x + y, filter(lambda x: x % 3 == 0 or x % 5 == 0,
map(lambda x: x, range(30))))
我需要帮助来计算给定范围内可被 3 或 5 整除的数字之和。到目前为止,我已经做到了;
print filter(reduce(map(lambda x, y: x % 3 == 0 or y % 5 == 0, x + y, range(30))))
抛出这个错误
Traceback (most recent call last):
File "<pyshell#65>", line 1, in <module>
print filter(reduce(map(lambda x, y: x % 3 == 0 or y % 5 == 0, x + y, range(30))))
NameError: name 'x' is not defined
我认为我还没有找到解决方案,甚至还没有走上正确的轨道,所以如果有人能指出我的方向,那就太好了,干杯。
试试这个:
sum([i for i in range(1,100) if i%3==0 and i%5==0])
如果您需要一些解释,请随时询问:)
reduce(lambda x, y: x + y, filter(lambda x : x % 3 == 0 or x%5 == 0, range(11)), 0)
用b > a
定义a
和b
后:
reduce(lambda x, y: x + y, filter(lambda x: x % 3 == 0 or x % 5 == 0, range(a, b)))
你的情况:
reduce(lambda x, y: x + y, filter(lambda x: x % 3 == 0 or x % 5 == 0, range(30)))
或没有 reduce
和 filter
:
sum(x for x in range(30) if x % 3 == 0 or x % 5 == 0)
如果值的范围很大(不是 30
)你可以使用 xrange
if on python 2 这样它 returns 一个生成器而不是一个列表.
如果您确实还想包含 map
函数,您可以将其与恒等函数一起使用,如下所示:
reduce(lambda x, y: x + y, filter(lambda x: x % 3 == 0 or x % 5 == 0,
map(lambda x: x, range(30))))