lambda没有按预期工作

时间:2016-11-27 22:57:45

标签: python python-2.7 loops lambda

我想知道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工作,我将不胜感激!

1 个答案:

答案 0 :(得分:0)

正如已经提到的,问题是你的if-block被传递了。

既然你说B类似于A条件:

if i in B:

永远不会是真的,因为我是一个数字,而B的值是一个元组或一个字符串。

你的lambda也检查一个整数(范围(50))是否包含在(string,float)的元组中,它很可能在大多数时候返回false。