这些中哪一个是在Python中检查列表是否为空的最快方法?

31 浏览
0 Comments

这些中哪一个是在Python中检查列表是否为空的最快方法?

这个问题已经有了答案

如何检查一个列表是否为空?

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

  1. if not []
  2. if not len([])
  3. if len([]) == 0
  4. if len([]) is 0

如果不是,哪种方法是检查此布尔值的最快方法以及为什么?-即对于每种情况在幕后发生了什么?差别可能微不足道,但我很好奇它们在执行期间可能有何不同。

admin 更改状态以发布 2023年5月22日
0
0 Comments

if not array

这是最常用的检查方式。注意:它不适用于其他可迭代对象,比如numpy数组。

if not len(array)

与上面的表达式等价,但不太惯用。它适用于numpy数组,但仍可能在具有自定义__len__的其他可迭代对象上失败(不存在威胁,要清楚)。

if len(array) == 0

与上述相同,但消除了来自自定义可迭代对象的不存在威胁。

if len(array) is 0

危险地带:它在CPython中可以工作是因为实现细节,但通常不能保证它不会在未来崩溃,或者会在其他Python实现上工作。建议尽量避免使用。

0