3

我正在将 Python 代码转换为 C,以便利用 HPC 系统上可用的并行性(这是一个痛苦的过程),并且我在 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)如果f有长度,则为 True,否则为空。如果f是标准 Python 序列类型,则代码可以简化为:

if f: alim = f[-1]

因为这同样适用于序列;empty 是 False,具有非零长度意味着它是 True。

有关所有重要细节,请参阅Python 文档中的真值测试

请注意,<>已弃用;你真的应该!=改用。

于 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 回答