我想以更简洁的方式编写下面的函数:
def sum_list(l):
x = 0
for i in l:
x += i
return x
Run Code Online (Sandbox Code Playgroud)
我知道我可以轻松地做到这一点:
def sum_list(l):
return sum(l)
Run Code Online (Sandbox Code Playgroud)
但是为了更好地理解python,我一直在修改生成器和列表理解.
所以我尝试过:
def sum_list(l):
x = 0
return (x += i for i in l)
Run Code Online (Sandbox Code Playgroud)
但这只是返回生成器对象.我记得在某个地方读过它应该在像sum()这样的操作中使用,或者沿着这些行的某些东西,但我似乎找不到那篇文章了.
有人可以指出我的一些文献的方向,或者可能花时间解释一些围绕这种性质的基础知识吗?
我想你想要reduce- http://docs.python.org/library/functions.html#reduce
def sum_iterable(a):
return reduce(lambda x,y: x+y, a, 0)
Run Code Online (Sandbox Code Playgroud)
基本上,reduce允许您将可迭代或列表"折叠"为值.您不希望生成器表达式应该返回单个值.
| 归档时间: |
|
| 查看次数: |
1840 次 |
| 最近记录: |