我正在将 Python 代码转换为 C,以便利用 HPC 系统上可用的并行性(这是一个痛苦的过程),并且我在 Python 中遇到了原始程序员使用的一个让我感到困惑的条件
if rnum <> current_res:
alim = 0
if len(f): alim = f[-1]
如果 len(f) 满足怎么办?我在网上的任何地方都找不到以这种方式使用的这种约定。我想这是一种糟糕的编程习惯。
任何帮助将非常感激!
我正在将 Python 代码转换为 C,以便利用 HPC 系统上可用的并行性(这是一个痛苦的过程),并且我在 Python 中遇到了原始程序员使用的一个让我感到困惑的条件
if rnum <> current_res:
alim = 0
if len(f): alim = f[-1]
如果 len(f) 满足怎么办?我在网上的任何地方都找不到以这种方式使用的这种约定。我想这是一种糟糕的编程习惯。
任何帮助将非常感激!
在 Python 中,被视为“空”的值(例如数字 0)在布尔上下文中被视为 False,否则为 True。
因此,len(f)
如果f
有长度,则为 True,否则为空。如果f
是标准 Python 序列类型,则代码可以简化为:
if f: alim = f[-1]
因为这同样适用于序列;empty 是 False,具有非零长度意味着它是 True。
有关所有重要细节,请参阅Python 文档中的真值测试。
请注意,<>
已弃用;你真的应该!=
改用。
在大多数情况下,将与...if len(f):
相同。if f:
原因是如果f
没有长度,它会返回0
一个假值。实际上,在某些情况下__len__
,真值测试实际上会检查对象 ( )的长度。
这
if len(f)
将转化为:
if len(f) != 0
或者在这种情况下,因为len(f)
永远不会是负数,
if len(f) > 0