【发布时间】:2014-08-23 18:46:17
【问题描述】:
假设我们有一个列表:
X = [1,2,3,4,5,6,7,8]
我们创建了一个名为 add() 的函数:
def add():
sum = 0
result = 0
for e in X:
sum = sum + e
return sum
add()
遍历数字 X 的列表,将列表中的下一个元素添加到前一个总和中。所以对于每个元素 X[i],我们有:
1
3
6
10
15
21
28
36
45
现在,如果我想通过使用列表推导式再次将这些结果放入列表中怎么办。是否可以在列表理解中调用诸如 add() 之类的函数, 考虑到可以在列表推导中应用内置函数吗?
我尝试了以下方法:
L = [add() for e in X]
print L
给了
[None, None, None, None, None, None, None, None, None]
而不是
[1,3,6,10,15,21,28,36,45]
为什么我在这个列表中得到 NoneType 值?
【问题讨论】:
-
我不确定单个
add()调用如何产生多个值。 -
这里出了点问题 -
add()函数只返回一个值,并且每次都应该相同(因为X没有被修改)。你确定你在add()中有return而不是print? -
您的
for循环在第一次迭代时返回。 -
我得到的是
[1, 1, 1, 1, 1, 1, 1, 1];你确定你使用了正确的add()函数吗?
标签: python function list-comprehension nested