检查Python中的对象是否为列表的列表?

34

我们可以使用 type(obj) --> list 来检测一个对象是否为 Python 中的列表。

但是,如果想要检测一个对象是否为列表中包含其他列表的情况,该怎么做呢?

[['a','b']['a','b'][][]]
2个回答

53

使用isinstance()函数检查特定类型:

>>> isinstance([], list)
True

使用all()函数来测试是否所有元素都是某种类型:

all(isinstance(elem, list) for elem in list_of_lists)

all() 函数具有短路特性;如果测试中的任何一个返回 False,则循环将被终止并返回 False。当且仅当除一个元素外的所有元素都返回 True 时,all() 才需要检查可迭代对象的每个元素。


4

如果你想确保列表中的每个项目都是列表,可以尝试以下方法:

if all(isinstance(i, list) for i in lst):
    # All of the items are lists
  • isinstance(i, list) 是比写 type(i) == type(list)type(i) == list) 更好的方式。
  • all() 如果序列中所有项都是 True,它将返回 True。如果有任何一个不是 True,它将返回 False

type(i) == type(list) 现在仍然可以工作。:-P type(i) is list 也有一些优点;它测试确切的类型(不允许子类)。 - Martijn Pieters

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接