用一行代码写出1+2+3+10248的和

看到这题的时候,我觉得自己的智商被侮辱了

print(1+2+3+10248)
print(sum((1,2,3,10248)))

这样是不是就可以?

出于对题目的尊重,百度了一下,发现reduce()这个函数。

菜鸟教程https://www.runoob.com/python/python-func-reduce.html
*描述
reduce() 函数会对参数序列中元素进行累积。

函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。
reduce() 函数语法:

reduce(function, iterable[, initializer])

# 参数
# function -- 函数,有两个参数
# iterable -- 可迭代对象
# initializer -- 可选,初始参数

*返回值
返回函数计算结果。

*实例
以下实例展示了 reduce() 的使用方法:

>>>def add(x, y) :            # 两数相加
...     return x + y
... 
>>> reduce(add, [1,2,3,4,5])   # 计算列表和:1+2+3+4+5
15
>>> reduce(lambda x, y: x+y, [1,2,3,4,5])  # 使用 lambda 匿名函数
15

除此之外,还有一篇博客

“reduce() 函数在 python 2 是内置函数, 从python 3 开始移到了 functools 模块。
python 社区推荐写可读性好的代码,有更好的选择时不建议用reduce,所以 python 2 中内置的reduce 函数 移到了 functools模块中”

切身体会

from functools import reduce

a = reduce(lambda a, b: a + b, (1, 2, 3, 10248))
print(a)  # 10254
上一篇:功能包包装装饰器的“启动问题”是什么?


下一篇:Python3中reduce和lambda的用法