gpt4 book ai didi

python - python 循环中的 lambda 运算符

转载 作者:行者123 更新时间:2023-11-28 21:47:48 25 4
gpt4 key购买 nike

<分区>

我在 python 循环中遇到了 lambda 函数的一些奇怪行为。当我尝试将 lambda 函数分配给列表中的字典条目时,以及当函数中使用字典中的其他条目时,只有最后一次通过循环才评估 lambda 运算符。所以所有的函数最终都具有相同的值!

下面是精简的代码,它只捕获了我正在尝试的行为异常的部分。我的实际代码更复杂,不像这样简单,所以我正在寻找解释,最好是解决方法。

n=4
numbers=range(n)
entries = [dict() for x in numbers]

for number, entry in zip(numbers,entries):
n = number
entry["number"] = n
entry["number2"] = lambda x: n*1

for number in numbers:
print(entries[number]["number"], entries[number]["number2"](2))

输出是:

0 3
1 3
2 3
3 3

换句话说,只是整数的字典整体很好,并且被循环正确填充了。但是 lambda 函数——它们很简单,应该只返回与“数字”条目相同的值——全部设置为最后一次通过。

这是怎么回事?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com