Python 为什么陈述被视为虚假?

Python 为什么陈述被视为虚假?,python,if-statement,Python,If Statement,我对Python非常陌生,所以这可能是一个非常愚蠢的问题,但我找不到错误 我有以下代码,它在脚本启动时运行(在Raspberry Zero W上)。函数的convertTimeToArray()总是返回一个数组,但不总是一个填充数组。这是正确的。因此,我需要检查该数组是否已填充,如果已填充,则需要处理该数组(在本例中显示在LED条上) 但是,即使语句为true(在控制台中),代码始终指向该块的else: 我做错了什么?我仔细检查了选项卡,我非常确定它们是正确的。您可以删除是否为真以使如果数组和l

我对Python非常陌生,所以这可能是一个非常愚蠢的问题,但我找不到错误

我有以下代码,它在脚本启动时运行(在Raspberry Zero W上)。函数的
convertTimeToArray()
总是返回一个数组,但不总是一个填充数组。这是正确的。因此,我需要检查该数组是否已填充,如果已填充,则需要处理该数组(在本例中显示在LED条上)

但是,即使语句为true(在控制台中),代码始终指向该块的else:


我做错了什么?我仔细检查了选项卡,我非常确定它们是正确的。

您可以删除
是否为真
以使
如果数组和len(数组)>0
您已经创建了一个链式比较,它实际上是
len(数组)>0,并且0为真
。经验法则:1)永远不要显式检查
True
,这是多余的,而且容易出错。2) 除了在非常特殊的情况下,您几乎总是希望
==
而不是
is
。这是Python,因此调用
数组
类似于
时间列表
的东西可能不会太混乱。如果你想坚持使用
是真的
,那么重做
(数组和len(数组)>0)是真的
。谢谢!更改语句(删除
是真的
是诀窍!如果有人能把它作为答案,我可以将它标记为解决方案。@CoryKramer:
如果数组和len(数组)由于Python对容器的真实性规则,>0
是多余的,因此可以缩短为if-array,它可以用更少的代码更快地完成同样的事情。
try:
    while True:
        array = convertTimeToArray(strip)
        print('len(array)', len(array))
        print('array and len(array) > 0', array and len(array) > 0)
        if array and len(array) > 0 is True:
            showArray(strip, CLOCK_COLOR,array, EFFECT)
            print('array set, now waiting 50 seconds')
            time.sleep(50)
        else:
            print('wait another 5 seconds')
            time.sleep(5)

except KeyboardInterrupt:
    colorWipe(strip, Color(0, 0, 0), 1)
len(array) 20
array and len(array) > 0 True
wait another 5 seconds