私は大まかに近いPythonでいくつかのコードを書いているの組み合わせに応じた行動を拡張し、次の条件
vals = [3, 4]
constraints = [5, 10]
def foo(val, constraint):
return val <= constraint
def bar(x, y):
# do stuff such as:
print(x, y)
def baz(val):
# transform val, such as by doing:
new_val = (val * 20 - 5) ** 2
return new_val
bar(*vals)
if foo(vals[0], constraints[0]):
bar(vals[0], baz(vals[1]))
if foo(vals[1], constraints[1]):
bar(baz(vals[0]), vals[1])
if foo(vals[0], constraints[0]) and foo(vals[1], constraints[1]):
bar(baz(vals[0]), baz(vals[1]))
私は、これは代数的な関係であることを認識し、それははるかにあるはずのように感じていますこれをコードで表現するためのより簡潔な方法です。
はのは、インデックス0にfoo
によって返さTrue
がA
あり、そしてインデックス1にfoo
によって返さTrue
がB
であることを言ってみましょう。 A
が真である場合に適用される動作はa
であり、同様にB
がb
である。その他の結果は_
です。生成される値のセットは、次のようになります。
| _ | A | B |
-----------------------------
_ | x, y | x, y | x, y |
| | ax, y | x, by |
-----------------------------
| x, y | x, y | x, y |
A | ax, y | ax, y | x, by |
| | | ax, by |
-----------------------------
| x, y | x, y | x, y |
B | x, by | ax, y | x, by |
| | ax, by | |
彼らは後でmap
PEDまたは反復することができるように、これらの値を生成するための簡潔な(好ましくは、一般的な)方法はありますか?
ここでは、「bar」と「baz」とは何ですか? – James
@James 'bar'は、表示されたコードに関連していない副作用を持つ関数です。 'baz'は加算、乗算、または型を保持する他の演算などの入力値の変換です。 – Aaron3468