我正在尝试创建一个函数(函数对象)列表,从另一个列表中打印出相应的项目:
strings = ["a", "b", "c"]
functions = []
for i in strings:
functions.append(lambda: print(i))
Run Code Online (Sandbox Code Playgroud)
上面的代码的作用是创建 lambda 函数,该函数在调用时会打印 i 的值。我希望字符串列表和函数列表的项目具有一对一的关系,这意味着我想要以下结果。
输出1:
>>> functions[0]()
'a'
>>> functions[1]()
'b'
>>> functions[2]()
'c'
Run Code Online (Sandbox Code Playgroud)
但我得到这个:
输出2:
>>> functions[0]()
'c'
>>> functions[1]()
'c'
>>> functions[2]()
'c'
Run Code Online (Sandbox Code Playgroud)
我知道 for 循环中的变量 i 在循环结束后仍然存在,并且所有函数最终都会打印出相同的 i 值。
有没有办法让函数打印出字符串列表的相应值,就像上面的Output1一样?
python ×1