我们可以使用 type(obj)
--> list
来检测一个对象是否为 Python 中的列表。
但是,如果想要检测一个对象是否为列表中包含其他列表的情况,该怎么做呢?
[['a','b']['a','b'][][]]
使用isinstance()
函数检查特定类型:
>>> isinstance([], list)
True
使用all()
函数来测试是否所有元素都是某种类型:
all(isinstance(elem, list) for elem in list_of_lists)
all()
函数具有短路特性;如果测试中的任何一个返回 False
,则循环将被终止并返回 False
。当且仅当除一个元素外的所有元素都返回 True
时,all()
才需要检查可迭代对象的每个元素。
如果你想确保列表中的每个项目都是列表,可以尝试以下方法:
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)
现在仍然可以工作。:-Ptype(i) is list
也有一些优点;它测试确切的类型(不允许子类)。 - Martijn Pieters