我想尝试使用匿名函数,所以我决定制作一个简单的素数查找器。这里是:
tests = []
end = int(1e2)
i = 3
while i <= end:
a = map(lambda f:f(i),tests)
if True not in a:
tests.append(lambda x:x%i==0)
print i
print tests
print "Test: "+str(i)
print str(a)
i+=2
然而,我发现每次访问 i
中的 lambda x:x%i==0
时,我希望它是一个文字数字。我怎样才能让它变成 lambda x:x%3==0
呢?
原文由 Hovestar 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以在创建 lambda 时“捕获”
i
这将在 lambda 的上下文中将
i
设置为等于创建时的i
。如果需要,您也可以说lambda x, n=i: x%n==0
。它不完全是捕获,但它可以满足您的需求。这是一个查找问题,类似于以下具有已定义函数的问题: