私はこのPythonの使用法を見ましたが、これは非常にクリーンですが、私はこの使用法を本当に理解しておらず、それについての有用な説明も検索できません。
これは通常の方法です。
if a < 0: b = 2 * a else: b = 3 * a
そして、これは同じ目的を実現します:
b = a * (3,2) [a<0]
誰かが私に教えてもらえますか ?公式文書は上記についてどこに書かれていますか?
私はこのPythonの使用法を見ましたが、これは非常にクリーンですが、私はこの使用法を本当に理解しておらず、それについての有用な説明も検索できません。
これは通常の方法です。
if a < 0:
b = 2 * a
else:
b = 3 * a
そして、これは同じ目的を実現します:
b = a * (3,2) [a<0]
誰かが私に教えてもらえますか ?公式文書は上記についてどこに書かれていますか?
b = a * (3,2) [a<0]
a<0
を返す条件ですtrue or false
。1/0
(3,2)
要素として3
のタプルです2
条件がtrue
ステートメントの場合、インデックスで要素にインデックスを付けます1
。そうでない場合は、要素にインデックスを付けます。0
お気に入り
In [33]: (3,2)[0]
Out[33]: 3
In [34]: (3,2)[1]
Out[34]: 2
条件は、Python0
および1
True means 1
False means 0
In [35]: True == 1
Out[35]: True
In [36]: False == 0
Out[36]: True
ゴルフの目的でのみ2番目のオプションを使用してください。ドキュメントにはこの構文についてはあまり記載されていませんが、PythonのZenには、「単純な方が複雑なものよりも優れている」、「読みやすさが重要」と記載されています。最初のオプションを使用する必要があります。
Pythonの三項演算子を使用することもできます。
b = a*(2 if a < 0 else 3)