3

HPC システムで利用可能な並列処理を利用するために、Python コードを C に変換しています (これは面倒なプロセスです)。元のプログラマーが使用していた Python の条件文に出くわし、混乱しています。

   if rnum <> current_res:
      alim = 0
      if len(f): alim = f[-1]

len(f) が満たす場合はどうなりますか? この方法で使用されているこの規則は、オンラインのどこにも見つかりません。それは悪いプログラミング習慣だと思います。

どんな助けでも大歓迎です!

4

3 に答える 3

18

Python では、数値 0 などの「空」と見なされる値は、ブール値のコンテキストでは False と見なされ、それ以外の場合は True と見なされます。

したがって、長さlen(f)がある場合は True f、それ以外の場合は空です。が標準の Python シーケンス タイプの場合f、コードは次のように簡略化できます。

if f: alim = f[-1]

同じことがシーケンスにも当てはまるためです。empty は False で、長さがゼロでない場合は True を意味します。

すべての重要な詳細については、Python ドキュメントのTruth Value Testingを参照してください。

<>非推奨になっていることに注意してください。代わりに実際に使用する必要があります!=

于 2013-04-09T14:54:29.537 に答える
9

ほとんどの場合、 ...if len(f):と同じものになります。if f:

その理由は、f長さがない場合0、偽の値であるが返されるためです。実際には、真偽テストでは、状況によって__len__はオブジェクト ( )の長さを実際にチェックします。

于 2013-04-09T14:54:34.043 に答える
5

これ

if len(f)

翻訳すると:

if len(f) != 0

またはこの場合、len(f)は負にならないので、

if len(f) > 0
于 2013-04-09T14:57:28.957 に答える