2016-11-27 7 views
0

ラムダが私のコードで使用しようとしたときに、ラムダが望むように動作しないように思っていたので、ここに私のコードは次のとおりです。ラムダが期待どおりに動作しない

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は、可能性の単語から成る、ほとんど同じことになります私が得ているエラーはUnboundLocalError: local variable 'part2' referenced before assignment です。は、'the'のような単語に置き換えると、その単語の割合である目的の結果が得られるので、私は問題であると信じています。誰かが私が望むやり方でラムダを動作させる方法を教えてもらえれば、それは大いに評価されるでしょう!

+1

これは 'lambda 'とは何も関係ありません。 'part2'は' if'ブロック条件が成立すればローカルスコープ*内にのみ存在します。 –

答えて

0

既に言及したように、ifブロックが渡されるという問題があります。

あなたはBが条件に類似していることを言ったので:

if i in B: 

は私が数であるとBの値がタプルまたはStringのいずれかであることのための真になることはありません。

また、ラムダは整数(範囲(50))が(string、float)のタプルに含まれているかどうかをチェックします。

+0

どうすれば 'A'の値をループさせることができますか? B [i]の中のA [i]のようなものか、len(A)のA [i]のためのものでしょうか? –

+0

実際に何をしようとしているのか説明できますか?たぶん、私たちはより良く助けることができます。私は本当にあなたがしたいことを得ることはありません.. –

関連する問題