用一行代码写出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

除此之外,还有一篇博客https://www.cnblogs.com/lonkiss/p/understanding-python-reduce-function.html

“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
原文地址:https://www.cnblogs.com/oklizz/p/11133883.html