例如,如果通过以下步骤:
a = []
如何检查a是否为空?
例如,如果通过以下步骤:
a = []
如何检查a是否为空?
当前回答
if not a:
print("List is empty")
使用空列表的隐含布尔性是相当Python的。
其他回答
len()是Python列表、字符串、字典和集合的O(1)操作。Python在内部跟踪这些容器中的元素数量。
JavaScript具有类似的truthy/falsy概念。
空列表的真值为False,而非空列表的值为True。
我更喜欢明确地说:
if len(li) == 0:
print('the list is empty')
通过这种方式,可以100%清楚地看出li是一个序列(列表),我们想测试它的大小。我的问题,如果不是李:。。。这给人一种错觉,认为li是一个布尔变量。
在真值测试中,空列表本身被认为是错误的(请参见python文档):
a = []
if a:
print("not empty")
达伦·托马斯的回答:
编辑:反对测试的另一点空列表为False:多态性?你不应该依赖列表是列表。它应该只是像鸭子一样呱呱叫-你怎么样让你的duckCollection呱呱叫当它没有元素时为“False”?
duckCollection应该实现__nonzero_或__len__,因此if-a:将毫无问题地工作。
Pythonic的做法来自PEP8风格指南。
对于序列(字符串、列表、元组),请使用空序列为false的事实:#正确:如果不是seq:如果seq:#错误:如果len(seq):如果不是len(seq):