如果一个列表(一个嵌套的包含元素和列表的列表)本质上是空的,有没有一种Pythonic方法来检查?我这里所说的空是指列表可能有元素,但这些元素也是空列表。
Pythonic检查空列表的方法仅适用于平面列表:
alist = []
if not alist:
print("Empty list!")
例如,以下所有列表都应为空:
alist = []
blist = [alist] # [[]]
clist = [alist, alist, alist] # [[], [], []]
dlist = [blist] # [[[]]]
Tags:
我将
isinstance()
byAnts Aasma和all(map())
byStephan202结合起来形成以下溶液。all([])
返回True
,函数依赖于此行为。我认为它两者兼备,而且更好,因为它不依赖于TypeError
异常。如果不需要遍历列表,则更简单的方法更好,因此类似这样的方法将起作用:
但是,最好将递归迭代分离开来,这样您很可能会在其他地方重用它,并检查它是否返回任何元素。这样,如果迭代机制改变了,就需要在一个地方实现改变。例如,当您需要支持任意嵌套iterable或嵌套dict时。
简单的代码,适用于任何iterable对象,而不仅仅是列表:
这段代码假设任何可以迭代的内容都将包含其他元素,并且不应被视为“树”中的一个叶。如果迭代对象的尝试失败,那么它不是序列,因此肯定不是空序列(因此返回} 返回
False
)。最后,如果参数是空序列,^{True
,这段代码将利用这一事实。相关问题 更多 >
编程相关推荐