2016-11-27 130 views
0

我想知道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

这与'lambda'没有任何关系。如果* if条件通过,'part2'将只存在于本地范围*中。 –

回答

0

正如已经提到的问题是,你的if块被通过。

既然你说B是类似的情况:

if i in B: 

将永远是我是一个数,B是要么一个元组或字符串的值如此。

此外,您的lambda检查一个整数(范围(50))是否包含在(string,float)的元组中,这个元组很可能在大多数情况下返回false。

+0

我该如何使它循环通过'A'的值。像B [i]中的A [i]'工作还是'len(A)'中的A [i]'? –

+0

你能解释一下你实际上想要做什么吗?也许我们可以帮助更好。我真的不明白你想做什么.. –