【发布时间】:2019-06-11 07:35:35
【问题描述】:
我有一个可以运行几次的函数(在递归函数中,因此带有“while”条件)。每次运行时,它都会return某个整数。例如,第一次运行returns3,第二次运行5,第三次运行9。
现在我需要将这些returns 保存在一个列表中。所以我想创建一个单独的函数来获取这些值并存储它们。所以我正在寻找的最终状态是拥有list = [3,5,8]。
B = [3,6,5,7,8,10]
def function_1(A):
for i in range(len(A)/2):
factor = A[2*i]
list_of_diagonals(factor)
return factor`
def list_of_diagonals(d):
factor_list = []
factor_list = factor_list.append(d)
return factor_list`
现在我希望print function_1(B) 会产生[3,5,8],但它只会产生8。
我认为这与我在函数开头定义 factor_list=[] 的事实有关,但我该如何解决呢?
【问题讨论】:
-
你只是从
function_1返回factor,它保存了A[2*i]的最后一个迭代值 -
你试过使用
yield了吗? -
我不认为“递归”与“while”条件相同。您的代码中也没有
while语句。只是一个for循环。 -
我不熟悉
yield。但是我在第一个函数中返回factor,只是为了确保我可以在第二个函数中使用它。我第二次返回factor_list,这样我以后可以使用它,对吧? -
@SpghttCd 该函数必须在它被调用之前定义,而不是在它出现在另一个定义之前。 Python 只是在运行时在 globals dict 中查找名称。我认为函数的顺序没有任何问题。
标签: python list function iteration