Tap*_*ose 2 python algorithm data-structures
以下是我似乎没有得到的代码片段。问题是如何让函数输出想要的结果(不说想要的结果是什么,我假设它打印的是 0 到 9)。
这是一个问题: 下面的代码片段打印出什么?我们如何修复匿名函数以达到我们期望的行为?
functions = []
for i in range(10):
functions.append(lambda : i)
for f in functions:
print(f())
Run Code Online (Sandbox Code Playgroud)
在 Python 中,不会产生新的作用域 for loop
所以在 之后for i in range(10),变量i仍然存在,其值 == 9。并且 lambda 函数lambda : i访问变量 i
为了输出您想要的结果,您应该将变量作为循环中的函数参数传递
functions = []
for i in range(10):
functions.append(lambda i=i: i)
for f in functions:
print(f())
Run Code Online (Sandbox Code Playgroud)