今天练习递归,想扩展一下结果时,遇到一个问题
L=[[1,3,4],9,[[4,6],8],[[[2,5],7],8],10] def fn(li): l=[] for x in li: if type(x) is list: fn(x) else: print(x) l.append(x) print(l) fn(L)
本来希望结果是输出:
1
3
4
9
4
6
8
2
5
7
8
10
[1,3,4,9,4,6,8,2,5,7,8,10]
结果却是这样
1 3 4 [1, 3, 4] 9 4 6 [4, 6] 8 [8] 2 5 [2, 5] 7 [7] 8 [8] 10 [9, 10]
一时还想不明白记录一下吧
问题找到了,应该还是对递归没深入理解,在进入递归函数后,[]又重新创建一个新的变量,正确的方法是:
L=[[1,3,4],9,[[4,6],8],[[[2,5],7],8],10] l=[] def fn(li): for x in li: if type(x) is list: fn(x) else: print(x) l.append(x) fn(L) print(l)
递归从形象上可以理解成视频会议中某种图像回环吧