私はpython 3でコードを持っています。それは "ほとんど繰り返され"、私はそれを短くする簡単な方法を探しています。Python3でほぼ繰り返されるコードを短くする
私が持っているものは、N個の変数を持つ関数f(x1、...、xN)です。ユーザは変数、例えばx5を選択し、他の変数を固定したf vs x5のプロットを得る。私はいつも、手のN関数で記述することができ、それぞれが異なるXIのために次のことをやって:
def get_Array_To_Plot_x5(x1, ..., x5Start, x5End, numberOfX5, ..., xN):
return [f(x1, ..., xN) for x5 in numpy.linspace(xiStart, xiEnd, numberOfXi)]
それから私は、ユーザーの入力に応じて、私のメインのスクリプトで適切なget_Array_To_Plot_xi機能(この例ではget_Array_To_Plot_x5)を呼びたい、とこの配列をプロットする。
このコードを書くには良い方法はありますか?私は、このスクリプトを私のためのテキストファイルとして書く別のコードを書くことができますが、私は可能ならばより洗練されたソリューションを望んでいます。
編集:マッド物理学者によって要求されたサンプルコードを追加:ここで
は、私が書いたコードは(私はKwantライブラリを使用してs波トポロジカル超伝導体のエネルギーレベルを計算しています)です:
def get SWaveEnergies(V0, mu, B_Zeeman, alpha, Delta, W, L, noOfLevels, a, t):
return some_floating_number
def SWave_vsMu(muStart, muEnd, noOfmu, V0, B_Zeeman, alpha, Delta, W, L, noOfLevels=6, a=1, t=1.0):
return [SWaveEnergies(V0, mu, B_Zeeman, alpha, Delta, W, L, noOfLevels, a, t) for mu in np.linspace(muStart, muEnd, noOfmu)]
私はこれを違った形で書いています。xiStart
、xiEnd
、noOfxi
です。ユーザーのコマンドライン入力は、私が呼び出す関数を決定します。
'x1 ... xN'は単一の配列として提供されるのでしょうか、別の変数として提供されていますか? –
これを読んで、少なくとも引数の設定方法と関数の呼び出し方法に関して、もう少しコンテキストを提供すれば非常に役に立ちます。 –
元々、ユーザーは選択したものを除き、すべてのxiに対して単一の値を与えます。選択した値に対して、配列(または配列を構築するのに十分な情報)を効果的に与えます。 –