本人python新手,突发奇想,想通过循环生成一个以lambda函数为元素的列表,但是发现了一个问题:
a=[]
for i in range(3):
a.append(lambda x:x==i)
# 期望得到 [lambda x:x==0,lambda x:x==1,lambda x:x==2]
#但实际得到 [lambda x:x==2,lambda x:x==2,lambda x:x==2]
print(a[0](0))
print(a[0](2))
print(a[0](0))得到的结果是False而不是期望的True;
print(a[0](2))得到的结果是True而不是期望的False。
我不知道导致以上情况的具体原因,但找出了一种解决方法:
a=[]
def addfunc(a,i):
a.append(lambda x:x==i)
for n in range(3):
addfunc(a,n) #得到了[lambda x:x==0,lambda x:x==1,lambda x:x==2]