Skip to main content
 首页 » 编程设计

python之python中的复杂表达式减少

2025年05月04日16虾米姐

是否有一种聪明的方法来对列表求和,但实际上在求和之前执行 map 类型的功能。

我正在尝试将这些函数组合成一个使用 lambda 的函数:

xlist = [1, 2, 3, 4] 
sum(map(lambda x: (x - 1.0)**2, xlist)) 
 
# result = 14.0 

我正在尝试这个:

reduce(lambda x, y: x + (y - 1.0)**2, xlist) 
 
# result = 15.0 

但结果不一样。解决这个问题的最聪明的方法是什么。我有点好奇,我知道我可以使用 sum(map()) 但我想知道是否可以通过这种方式使用 reduce。

请您参考如下方法:

是的,你只需要传递一个初始值0:

>>> xlist = [1, 2, 3, 4] 
>>> reduce(lambda x, y: x + (y - 1.0)**2, xlist, 0) 
14.0 
>>> 

请记住,reduce 通常被 Python 程序员讨厌,因为它太难读了。使用第一种方法可能会更好。

或者,更好的是,使用 generator expression :

sum((x - 1.0)**2 for x in xlist) 

这更容易阅读,也更有效,因为 map 创建了一个不必要的列表。