という方法で次の式を書きますが、変数を2回繰り返さないでしょうか? を複数回書き込む必要があるときは、非常に迷惑です。リストの理解とイテレータを使った些細な煩わしさ
['hello {} {}'.format(A,B) for A,B in product(As,Bs)]
という方法で次の式を書きますが、変数を2回繰り返さないでしょうか? を複数回書き込む必要があるときは、非常に迷惑です。リストの理解とイテレータを使った些細な煩わしさ
['hello {} {}'.format(A,B) for A,B in product(As,Bs)]
for
ループの場合とまったく同じですね。 *x
構文はあなたが同様に(1つの変数のみ)の上に書いたものを短くするかもしれない、私は今、パラメータ展開を実現
map(lambda x:'hello {} {}'.format(*x), product(As,Bs)]
:とにかく、あなたはマップを使用することができます。あなたがsomeFormatString.format(*x)
を適用する場合は常に、あなたのフォーマッタを生成する機能を使って、これを短縮することができます。
def mkStr(formatStr):
return lambda x,f=formatStr: f.format(*x)
は、その後、あなたは
map(mkStr('hello {} {}'), product(As,Bs)]
にマッピングし、異なるフォーマット文字列でそれを切り替えることができます。
['hello {} {}'.format(*ab) for ab in product(As, Bs)]
を*args
-magicを使用して:あなたはそこに着くことができる唯一のマイナーチェンジで
。
fwiw私は、このようなコードの短縮を目指すことは、コードをあまり明示的でなく推論するのが難しいと考えています。 「Pythonのzen」(https://www.python.org/dev/peps/pep-0020/)「Explicitは暗黙より優れています。」を覚えておいてください。 –