列表元素含有匿名函数的问题
cons=[]
for j in range(0,3):
cons.append({'fun': lambda x: x[j]})
用这个循环语句生成了一个列表,其元素是字典,字典里有一个匿名函数。
现在调用定义好的的cons中的匿名函数
t=[0,1,2,3]
cons[0]['fun'](t)
cons[1]['fun'](t)
cons[2]['fun'](t)
得到的结果都是2,而不是0,1,2,因为此时j仍然被赋予2的值。我必须每次调用匿名函数都事先修改j的值才能调用对应值,很麻烦。
我希望达到的效果是cons=[{'fun':lambda x: x[0]},{'fun':lambda x: x[1]},{'fun':lambda x: x[2]}],这样就固定了。请问有什么办法?谢谢。
for j in range(0,3):
cons.append({'fun': lambda x: x[j]})
用这个循环语句生成了一个列表,其元素是字典,字典里有一个匿名函数。
现在调用定义好的的cons中的匿名函数
t=[0,1,2,3]
cons[0]['fun'](t)
cons[1]['fun'](t)
cons[2]['fun'](t)
得到的结果都是2,而不是0,1,2,因为此时j仍然被赋予2的值。我必须每次调用匿名函数都事先修改j的值才能调用对应值,很麻烦。
我希望达到的效果是cons=[{'fun':lambda x: x[0]},{'fun':lambda x: x[1]},{'fun':lambda x: x[2]}],这样就固定了。请问有什么办法?谢谢。
...全文
相关推荐
Python小技巧之列表推导式到匿名函数
【Python小技巧之列表推导式到匿名函数】在Python编程中,列表推导式(List Comprehension)和匿名函数(Lambda Function)是两个强大的工具,它们在编写简洁、高效的代码方面起着至关重要的作用
Python问题解决,重复向列表中添加字典作为元素
在Python编程中,当试图在一个列表中重复向其中添加字典作为元素时,可能会遇到意外的行为。默认情况下,Python的`append()`方法会直接将最后一个添加的字典元素的内容复制到列表中的新位置,
python 求一个列表中所有元素的乘积实例
### Python求一个列表中所有元素的乘积实例详解在Python编程中,处理列表是非常常见的需求之一。有时候,我们需要计算列表中所有元素的乘积。
python创建列表和向列表添加元素的实现方法
在本文中,我们将深入探讨如何创建列表以及如何向列表中添加元素。一、创建列表1. 创建普通列表:你可以通过在方括号`[]`内放置元素来创建一个列表。元素之间用逗号分隔。
python实现删除列表中某个元素的3种方法
**remove()**: `remove()` 方法用于删除列表中首次出现的指定值。如果列表中有多个相同值的元素,`remove()` 只会删除第一个匹配到的元素。


