5

检查列表是否仅包含空值(不是列表是否为空,而是空元素列表)的最有效方法是什么?我在 for 循环中使用著名的 pythonic 隐式布尔方法:

def checkEmpty(lst):
    for element in lst:
        if element:
            return False
            break
    else:
        return True

周围有更好的吗?

4

4 回答 4

16
if not any(lst):
    # ...

应该管用。 如果传递的可迭代对象的任何元素评估为 ,则any()返回。相当于:TrueTrue

def my_any(iterable):
    for i in iterable:
        if i:
            return True
    return False
于 2012-08-30T15:45:42.277 回答
3
len([i for i in lst if i]) == 0
于 2012-08-30T15:45:29.607 回答
2

使用all

   if all(item is not None for i in list):
      return True
    else:
      return False
于 2012-08-30T15:47:41.137 回答
1
>>> l = ['', '', '', '']
>>> bool([_ for _ in l if _])
False
>>> l = ['', '', '', '', 1]
>>> bool([_ for _ in l if _])
True
于 2012-08-30T15:45:41.950 回答