私は関数をできるだけ短く定義しようとしています。関数test
は常にtrueの場合はTrueを返し、falseの値がある場合はfalseを返します。私はそうしようとしました:
def res(v): for d in List: return True if v.test(d) else: pass
それは動作しません。そのような関数を定義する方法は?
1行だけで定義したい。
私は関数をできるだけ短く定義しようとしています。関数test
は常にtrueの場合はTrueを返し、falseの値がある場合はfalseを返します。私はそうしようとしました:
def res(v): for d in List: return True if v.test(d) else: pass
それは動作しません。そのような関数を定義する方法は?
1行だけで定義したい。
どうですか:
res = lambda x: all(test(v) for v in x)
または
res = lambda x: all(map(test, x))
Vladimirがコメントで述べているように、yourはtest
実際にはと呼ばれるオブジェクトのメソッドであるv
ため、実際には次のようになります。
lambda v: all(map(v.test, List)) # You should not use List as a variable name!
List
ただし、おそらく引数としても渡したいと思うでしょう。
これはあなたが望むものに近いです:
def res(v, values):
return all(v.test(d) for d in values)
これも機能します:
def res(v, values):
return filter(v.test, values) == values
上記のように、変数に名前を付けないでくださいlist
。