美文网首页ITS·黑客
对一个题目的理解

对一个题目的理解

作者: JEZAU | 来源:发表于2017-04-22 15:59 被阅读0次

    题目:li = [lambda :x for x in range(10)]

    回忆列表生成器:
    a = [x for x in range(10)]
    循环其实是一个不断赋值的过程
    相当于:

    x = 0
    a.append(x)
    x = 1
    a.append(x)
    ...```
    
    `lambda :x` 相当于
    

    def f():
    return x```

    [lambda :x for x in range(10)]相当于

    for x in range(10):
        f
    

    相当于:

    x = 0
    li.append(f)
    x = 1
    li.append(f)
    ...```
    
    于是li列表就是`[f,f,f,f,f,f,f,f,f,f]`
    这时候`x = 9`
    于是调用的时候都是9
    
    其他:return 可以加括号也可以不加
    

    ... return [12345]
    ...

    f()
    [12345]
    def f():
    ... return ([12345])
    ...
    f()
    [12345]```

    相关文章

      网友评论

        本文标题:对一个题目的理解

        本文链接:https://www.haomeiwen.com/subject/swdszttx.html