0

私はこのPythonの使用法を見ましたが、これは非常にクリーンですが、私はこの使用法を本当に理解しておらず、それについての有用な説明も検索できません。

  1. これは通常の方法です。

    if a < 0:
        b = 2 * a
    else:
        b = 3 * a
    
  2. そして、これは同じ目的を実現します:

    b = a * (3,2) [a<0]
    

誰かが私に教えてもらえますか ?公式文書は上記についてどこに書かれていますか?

4

2 に答える 2

3

b = a * (3,2) [a<0]

a<0を返す条件ですtrue or false1/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および1True means 1False means 0

In [35]: True == 1
Out[35]: True

In [36]: False == 0
Out[36]: True
于 2013-02-13T09:48:44.027 に答える
2

ゴルフの目的でのみ2番目のオプションを使用してください。ドキュメントにはこの構文についてはあまり記載されていませんが、PythonのZenには、「単純な方が複雑なものよりも優れている」、「読みやすさが重要」と記載されています。最初のオプションを使用する必要があります。

Pythonの三項演算子を使用することもできます。

b = a*(2 if a < 0 else 3)
于 2013-02-13T09:48:31.803 に答える