Python递归的问题

假如,我要实现以下的嵌套列表: [[[['a'],'a'],'a'],'a']

我写了一个递归函数,代码如下:

x=[]

def recursion(x,i):
    x.append(list('spam'))
    x=[x]
    i-=1
    print('i value is %d'%i)
    print(x)
    if i>0:
        print('start new recursion!')
        recursion(x,i)
    print('callback x"s value:',x)
    #return x
recursion(x,4)

输出如下结果:

i value is 3
[[['s', 'p', 'a', 'm']]]
start new recursion!
i value is 2
[[[['s', 'p', 'a', 'm']], ['s', 'p', 'a', 'm']]]
start new recursion!
i value is 1
[[[[['s', 'p', 'a', 'm']], ['s', 'p', 'a', 'm']], ['s', 'p', 'a', 'm']]]
start new recursion!
i value is 0
[[[[[['s', 'p', 'a', 'm']], ['s', 'p', 'a', 'm']], ['s', 'p', 'a', 'm']], ['s', 'p', 'a', 'm']]]
callback x"s value: [[[[[['s', 'p', 'a', 'm']], ['s', 'p', 'a', 'm']], ['s', 'p', 'a', 'm']], ['s', 'p', 'a', 'm']]]
callback x"s value: [[[[['s', 'p', 'a', 'm']], ['s', 'p', 'a', 'm']], ['s', 'p', 'a', 'm']], ['s', 'p', 'a', 'm']]
callback x"s value: [[[['s', 'p', 'a', 'm']], ['s', 'p', 'a', 'm']], ['s', 'p', 'a', 'm']]
callback x"s value: [[['s', 'p', 'a', 'm']], ['s', 'p', 'a', 'm']]

现在,你猜x的值是什么,不瞒你说,我看到结果都惊呆了 [['s', 'p', 'a', 'm']]

所以,求教下各路大神,为什么会出现这个问题,不胜感激

5 comments