ITS·黑客

对一个题目的理解

2017-04-22  本文已影响0人  JEZAU

题目: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]```

上一篇 下一篇

猜你喜欢

热点阅读