关于Python求list子集问题。。。一直搞不懂!小白求教!?

def gs(l):
    res=[]
    if len(l)==0:
        return [[]]
    small=gs(l[:-1])#这里每次调用gs之后会一直减小到空集!那么
    #这代码永远都return空集啊!因为small调用到最后总会满足if len(l)==0:
    extra=l[-1:]
    new=[]
    for sml in small:
        new.append(sml+extra)
        print new
    return small+new

我还画了个草图,没搞明白。。。

http://img.mukewang.com/58ec67c200019d3812800720.jpg

asdhjhg
浏览 2898回答 1
1回答

ruibin

其实这里就是一个闭包问题。最主要的是你要明白 for sml in small:        new.append(sml+extra)        print new    return small+new这行代码执行了多少次! (每调用一次gs, 他就执行一次,只是在最后执行罢了!切记,每次extra的值都不一样哦)这个就是闭包和递归的结合,重要的是理解程序的执行。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python