在Python中,以下哪种方法是检查列表是否为空的最快方法?

在Python中,以下哪种方法是检查列表是否为空的最快方法?,python,arrays,performance,boolean,cpython,Python,Arrays,Performance,Boolean,Cpython,在讨论主要问题之前,我首先要问:当您试图检查Python中的列表是否为空时,是否存在以下四种情况会产生不同布尔值的情况 如果不是[] 如果不是len([]) 如果len([])==0 如果len([])为0 如果不是,检查布尔值的最快方法是什么?为什么i、 e.每种情况下发动机罩下到底发生了什么?差异可能很小,但我很好奇,在执行过程中,它们会有什么不同。如果不是数组 这是最惯用的检查方法。警告:它不适用于其他iterables,例如numpy阵列 如果不是len(数组) 与上面的表达相同,但不是

在讨论主要问题之前,我首先要问:当您试图检查Python中的列表是否为空时,是否存在以下四种情况会产生不同布尔值的情况

  • 如果不是[]
  • 如果不是len([])
  • 如果len([])==0
  • 如果len([])为0

  • 如果不是,检查布尔值的最快方法是什么?为什么i、 e.每种情况下发动机罩下到底发生了什么?差异可能很小,但我很好奇,在执行过程中,它们会有什么不同。

    如果不是数组

    这是最惯用的检查方法。警告:它不适用于其他iterables,例如numpy阵列

    如果不是len(数组)

    与上面的表达相同,但不是那么地道。它将在numpy阵列上工作,但在其他具有自定义
    \uuuu len\uuuu
    的iterables上仍可能失败(需要说明的是,不存在威胁)

    如果len(数组)==0

    与上面相同,但消除了来自自定义iterables的不存在的威胁

    如果len(数组)为0


    危险地带:由于实现细节的原因,它将在CPython中工作,但通常不能保证它将来不会中断,或者它将在其他Python实现中工作。无论如何都要避免。

    绝对不要选择
    is
    。两个相等的整数不能保证是同一个对象。如果您指的是列表,请使用“列表”一词。即使它们的行为类似于其他语言称为“array”的数据类型,使用该语言的正确术语也很重要,因为“array”在Python中指的是其他内容。@user2357112supportsMonica您是否可以分享一种情况,即两个相等的整数不是同一个对象?我还是个编程新手@mysl:@mysl python解释器已经在内存中加载了介于-5和256之间的数字,因此如果使用这些数字,则相同的数字可能会引用同一对象,但是如果使用其他数字,相等的数字可能不会指向同一个对象:例如:>>>a=400>>>b=400>>>a是b假>>>a=200>>>b=200>>>a是b真我在哪里可以找到将来不会破坏的保证(或将起作用的保证)@lalala向后不兼容的更改只能在主要版本中引入,例如在Python 4中。不符合规格的东西随时都可以改变。因此,当前CPython的实现对于从-5到略高于100的整数有特殊的行为,但它不是规范的一部分,只是一个加速技巧。像这样的事情依赖于实现,可以改变