蟒蛇:一行函数返回一个发电机
问题描述:
我想写下面的功能更简洁的方式:蟒蛇:一行函数返回一个发电机
def sum_list(l):
x = 0
for i in l:
x += i
return x
我知道我可以很容易地做到这一点:
def sum_list(l):
return sum(l)
但我一直在修改生成器和列表理解,以更好地理解python。
所以,我想:
def sum_list(l):
x = 0
return (x += i for i in l)
但这仅返回生成的对象。我记得在某个地方应该在像sum()这样的操作中使用它,但我似乎无法再找到那篇文章。
有人可以向我指出一些涵盖这一点的文献的方向,或者可能花时间来解释一下这种性质陈述的基础知识吗?
答
我想你想reduce
- http://docs.python.org/library/functions.html#reduce
def sum_iterable(a):
return reduce(lambda x,y: x+y, a, 0)
基本上,减少让你“折叠”的迭代或列表到一个值。你不会想要一个生成器表达式来返回一个应该返回一个值的东西。
return(x + = i for i in l)这个东西在Python中不起作用,python不允许在理解或生成器内部进行赋值。 –