我正在翻譯Python代碼到C,以便利用HPC系統上可用的並行(這是一個痛苦的過程),我遇到了Python中的條件原始程序員使我困惑如果len(列表)在Python
if rnum <> current_res:
alim = 0
if len(f): alim = f[-1]
如果len(f)滿足怎麼辦?我無法在網上找到這種使用這種方式的慣例。我想這是一個糟糕的編程習慣。
任何幫助將不勝感激!
我正在翻譯Python代碼到C,以便利用HPC系統上可用的並行(這是一個痛苦的過程),我遇到了Python中的條件原始程序員使我困惑如果len(列表)在Python
if rnum <> current_res:
alim = 0
if len(f): alim = f[-1]
如果len(f)滿足怎麼辦?我無法在網上找到這種使用這種方式的慣例。我想這是一個糟糕的編程習慣。
任何幫助將不勝感激!
在Python中,被視爲'空'的值(例如數字0)在布爾上下文中被視爲False,否則爲True。
因此,如果f
有長度,則len(f)
爲真,否則爲空。如果f
是一個標準的Python序列類型則代碼可以被簡化爲:
if f: alim = f[-1]
因爲這同樣適用於子序列;空是假的,具有非零長度意味着它是真的。
有關所有重要細節,請參閱Python文檔中的Truth Value Testing。
請注意,<>
已被棄用;你應該真的使用!=
來代替。
在大多數情況下if len(f):
將是同樣的事情if f:
......
的原因是因爲如果f
沒有長度,它將返回0
這是一個falsy值。其實,真理實際測試檢查對象的長度(__len__
)under some circumstances.
這
if len(f)
將轉化:
if len(f) != 0
或在這種情況下,由於len(f)
從不爲負,
if len(f) > 0
'<>'早已棄用。改用'!='。 – 2013-04-09 14:53:58