2017-07-11 11 views
3

lambdaのようなものを実現して、Noneまたはlistの出力を持つ関数を呼び出したい場合は、リストであれば最初の値を取得します。出力なしのPythonラムダコール関数

lambda x: func(x,args)[0] if func(x,args) is not None else None 

ただし、この関数では、関数がNoneかどうかを調べるために関数を2回呼び出す必要があるようです。もちろん、私は試してみるか、条件ステートメントを使用してコードを書くことができます。

def function(x): 
    try: 
     return func(x,args)[0] 
    except (IndexError,TypeError): 
     return None 

またはちょうどfuncの出力を変更します。しかし、私はまだlambdaで関数を1回だけ呼び出すメソッドがあるかどうか不思議です。これはやる

+0

を最低でのみ 'IndexError'とあなたのコードは、*、(メモリエラーやキーボード割り込みを含む)*他のすべてをない投げることができる' TypeError'例外をキャッチします。 –

+0

どうして 'list = func(x、args);ラムダx:リストの場合はリスト[0]なしその他の場合は – yinnonsanders

+2

@yinnonsandersいいえ、2行で1つではありません。 –

答えて

14

lambda x: (func(x, args) or [None])[0] 
+0

短く、甘く、ポイントまで。間違いなく+1。 – cwallenpoole

関連する問題