私はこのようなことをしたいと思います:
x = f(a[0]) or f(a[1]) or f(a[2]) or f(a[3]) or …
指定された lista
と指定された function を使用しますf
。組み込み関数とは異なり、any
真と見なされるリストの最初の値を取得する必要があります。だけでなく、0 or "foo" or 3.2
を取得する必要があるからです。"foo"
True
もちろん、次のような小さな関数を書くこともできます
def returnFirst(f, a):
for i in a:
v = f(i)
if v:
return v
return False
x = returnFirst(f, a)
しかし、これはおそらく最も良い解決策ではありません。理由は、この SO の質問にも記載されています。この他のスレッドについて言及しているように、もちろん、そこで与えられた解決策に基づいたコードを使用することもできます。
x = next((f(x) for x in a if f(x)), False)
しかし、その後の二重呼び出しを回避する簡単な方法はわかりませんf
。
私が見逃している、または知らない簡単な解決策はありますか? のようなもの
OR((f(x) for x in a))
多分?
これに関する他の質問を見つけようとしましたがor
、SO でのようなキーワードの検索は少し問題があるため、適切なものが見つからなかったのかもしれません。