【发布时间】:2016-05-06 09:38:17
【问题描述】:
我很困惑试图解决“扁平化”列表列表的任务。
例如,我有一个列表 [1, [2, 2, 2], 4] - 我需要将其转换为 [1, 2, 2, 2, 4]。
我是这样解决的:
def flat_list(array, temp_list=[]):
for item in array:
if str(item).isdigit():
temp_list.append(item)
else:
temp_list = flat_list(item, temp_list)
return temp_list
但是当我测试它时:
assert flat_list([1, 2, 3]) == [1, 2, 3]
assert flat_list([1, [2, 2, 2], 4]) == [1, 2, 2, 2, 4]
assert flat_list([[[2]], [4, [5, 6, [6], 6, 6, 6], 7]]) == [2, 4, 5, 6, 6, 6, 6, 6, 7]
“temp_list”的值正在函数调用之间传输。第二个断言开头的 "temp_list" 的值是 [1, 2, 3] - 第一个断言的 "return" 的值 - 但不是 "[]"。
我猜,这是因为我对范围和“返回”指令有一些误解,但我不明白到底是什么。
【问题讨论】:
标签: python recursion return scopes