小编Job*_*Job的帖子

如何将特定项目与功能关联起来?

我正在尝试创建一个函数(函数对象)列表,从另一个列表中打印出相应的项目:

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
推荐指数
1
解决办法
97
查看次数

标签 统计

python ×1