如果我们有以下列表:
list = ['UMM', 'Uma', ['Ulaster','Ulter']]
如果我需要查明列表中的元素本身是否为列表,我可以用以下代码替换 aValidList 吗?
for e in list:
if e == aValidList:
return True
是否有特殊的导入使用?有没有最好的方法来检查变量/元素是否是列表?
答案 0 :(得分:112)
使用isinstance
:
if isinstance(e, list):
如果要检查对象是列表还是元组,请将几个类传递给isinstance
:
if isinstance(e, (list, tuple)):
答案 1 :(得分:21)
确定您希望项目具有的list
的具体属性。他们需要是可索引的吗?可切片?他们需要.append()
方法吗?
查找描述collections
模块中特定类型的抽象基类。
使用isinstance
:
isinstance(x, collections.MutableSequence)
您可能会问“为什么不使用type(x) == list
?”你不应该这样做,因为那样你就不会支持看起来像列表的东西了。 Python心态的一部分是duck typing:
我看到一只鸟像鸭子一样走路,像鸭子一样游泳,像鸭子一样呱呱叫,我称这只鸟为鸭子
换句话说,你不应该要求对象是list
,只要他们拥有你需要的方法。 collections
模块提供了一堆抽象基类,有点像Java接口。例如,任何collections.Sequence
实例的类型都将支持索引。
答案 2 :(得分:8)
您正在寻找的表达可能是:
...
return any( isinstance(e, list) for e in my_list )
测试:
>>> my_list = [1,2]
>>> any( isinstance(e, list) for e in my_list )
False
>>> my_list = [1,2, [3,4,5]]
>>> any( isinstance(e, list) for e in my_list )
True
>>>
答案 3 :(得分:3)
可能更直观的方式是这样
this.serviceUtil.getEndereco(cep)
.pipe((response: Endereco) => {
let endereco = response;
return endereco;
})
答案 4 :(得分:0)
您可以简单地写:
for item,i in zip(your_list, range(len(your_list)):
if type(item) == list:
print(f"{item} at index {i} is a list")