如果我们有以下列表:
list = ['UMM', 'Uma', ['Ulaster','Ulter']]
Run Code Online (Sandbox Code Playgroud)
如果我需要查明列表中的元素本身是否为列表,我可以用以下代码替换aValidList?
for e in list:
if e == aValidList:
return True
Run Code Online (Sandbox Code Playgroud)
是否有特殊的进口使用?有没有一种检查变量/元素是否为列表的最佳方法?
war*_*iuc 116
用途isinstance:
if isinstance(e, list):
Run Code Online (Sandbox Code Playgroud)
如果要检查对象是列表还是元组,请将几个类传递给isinstance:
if isinstance(e, (list, tuple)):
Run Code Online (Sandbox Code Playgroud)
Kat*_*iel 22
找出list您想要物品的具体属性.他们需要是可索引的吗?可切片?他们需要一种.append()方法吗?
查找描述collections模块中特定类型的抽象基类.
用途isinstance:
isinstance(x, collections.MutableSequence)
Run Code Online (Sandbox Code Playgroud)你可能会问"为什么不用它type(x) == list?" 你不应该这样做,因为那样你就不会支持看起来像列表的东西了.Python的一部分心态是鸭子打字:
我看到一只鸟像鸭子一样散步,像鸭子一样游动,像鸭子一样呱呱叫,我把那只鸟称为鸭子
换句话说,您不应该要求对象是lists,只要它们具有您需要的方法.该collections模块提供了一堆抽象基类,有点像Java接口.collections.Sequence例如,任何类型的实例都将支持索引.
您正在寻找的表达可能是:
...
return any( isinstance(e, list) for e in my_list )
Run Code Online (Sandbox Code Playgroud)
测试:
>>> 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
>>>
Run Code Online (Sandbox Code Playgroud)