if if len(list)在Python中

时间:2013-04-09 14:53:08

标签: python

我正在将Python代码翻译为C,以便利用HPC系统上可用的并行性(这是一个痛苦的过程),并且我遇到了原始程序员使用的Python中的条件混乱我

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

如果len(f)满足怎么办?我无法在网上找到以这种方式使用的这种约定。我认为这是一个糟糕的编程习惯。

非常感谢任何帮助!

3 个答案:

答案 0 :(得分:14)

在Python中,被视为“空”的值(例如数字0)在布尔上下文中被视为False,否则为True。

因此,如果len(f)有长度,则f为True,否则为空。如果f是标准的Python序列类型,那么代码可以简化为:

if f: alim = f[-1]

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

有关所有重要细节,请参阅Python文档中的Truth Value Testing

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

答案 1 :(得分:8)

在大多数情况下,if len(f):if f: ...

相同

原因是因为如果f没有长度,它将返回0这是一个假值。实际上,真值测试实际上会检查对象的长度(__len__under some circumstances.

答案 2 :(得分:4)

if len(f)

会转换为:

if len(f) != 0

或者在这种情况下,因为len(f)永远不会消极,

if len(f) > 0