1

マップによって呼び出されるラムダ関数で配列を初期化しようとしましたが、驚いたことに、IF-ELSEラムダ内では有効ではありません。

a = map( (lambda x: if (len(aDict[x])==m): return aDict[x] else: return false),
         aDict.keys())

これは私が得るエラーです

File "objects.py", line 63
a = map( (lambda x: if (len(aDict[x])==m): return aDict[x] else: return false),
                     ^
SyntaxError: invalid syntax

これが機能しない理由は何ですか?


編集:

今、私は興味深い代替表現を発見しました

>>> False and 'one' or 'two'
'two'
>>> True and 'one' or 'two'
'one'

非常に興味深い...これはワンライナー式です。これが理由です

4

1 に答える 1

5

ラムダ内でその構文を使用することも、明示的に返すこともできません。代わりにこれを試してください:

lambda x, m: aDict[x] if (len(aDict[x])==m) else False

Lambda 関数は、関数内のコードを評価した結果の値を暗黙的に返します。ただし、コードは単一の複合式 (別名ワンライナー) として表現できる必要があります。

于 2012-10-19T20:22:37.377 に答える