我想知道lambda是如何工作的,因为当我尝试在我的代码中使用它时,它似乎并不想按照我想要的方式工作。这是我的代码:
for i in range(50):
if i in B:
part1 = filter(lambda x: i in x, A)
part2 = reduce(lambda x, y: x + y, part1)
return part2[1]
A是50个单词的列表,其比率可能如下所示:
[['the', 0.6925910972039971], ['of', 0.3301705864540224], ['and', 0.304178863429898],...
B几乎是一回事,由可能与A中的内容相似的单词组成。我得到的错误是UnboundLocalError: local variable 'part2' referenced before assignment
我认为i
是问题,因为当我用'the'
之类的单词替换它。我得到了所需的结果,即该单词的比例。如果有人能告诉我如何以我想要的方式或以其他方式使lambda工作,我将不胜感激!
答案 0 :(得分:0)
正如已经提到的,问题是你的if-block被传递了。
既然你说B类似于A条件:
if i in B:
永远不会是真的,因为我是一个数字,而B的值是一个元组或一个字符串。
你的lambda也检查一个整数(范围(50))是否包含在(string,float)的元组中,它很可能在大多数时候返回false。