说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
(编码题)用 reduce 计算0到100中所有被3整除的数字之和
提示,0到100的所有整数可以用 range(101)
Python 代码如下
from functools import reduce
reduce(lambda x, y: x + (y if y%3==0 else 0),
range(101)
)
# 1683
如果不写匿名函数则是:
from functools import reduce
def add(x, y):
if y%3 != 0:
y = 0
return x + y
reduce(add, range(101))
# 1683
如果题目不限定用 reduce,我们还有以下方法:
用生成器表达式:
sum(i for i in range(101) if i%3==0)
# 1683
这段代码创建了一个从0到100的数字范围,并使用生成器表达式过滤出其中所有被3整除的数字,然后使用 sum 函数计算它们的总和。最终的结果即为0到100中所有被3整除的数字之和。
循环来逐个遍历数字:
result = 0
for number in range(101):
if number % 3 == 0:
result += number
result
# 1683
这段代码通过循环遍历从 0 到 100 的每个数字,检查是否被 3 整除,然后将符合条件的数字累加到结果中。这是一种基本的逐个累加的方法。在这个具体的问题中,可能不如直接使用数学公式或列表推导式和 sum 函数来得简洁和高效。但在其他一些情况下,使用循环可能是一种合适的选择,特别是对于处理复杂逻辑或条件的情况。
查看相关链接中的知识。
(完)
更新时间:2024-08-16 22:43:38 标签:python 习题 reduce