如何检查列表中的元素是否是列表(在Python中)?

2024-04-27 23:02:08 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我们有以下清单:

list = ['UMM', 'Uma', ['Ulaster','Ulter']]

如果需要确定列表中的元素本身是否是列表,那么在下面的代码中可以用什么替换avalidlest

for e in list:
    if e == aValidList:
        return True

有特别的进口货要用吗?有没有一种检查变量/元素是否为列表的最佳方法?


Tags: 代码intrue元素列表forreturnif
3条回答

您要查找的表达式可能是:

...
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
>>> 

使用^{}

if isinstance(e, list):

如果要检查对象是列表还是元组,请将几个类传递给isinstance

if isinstance(e, (list, tuple)):
  1. 找出您希望项具有的list的特定属性。它们需要可转位吗?可切片?他们需要一个.append()方法吗?

  2. 查找描述^{}模块中特定类型的抽象基类。

  3. 使用^{}

    isinstance(x, collections.MutableSequence)
    

你可能会问“为什么不直接使用type(x) == list?”你不应该那样做,因为那样你就不支持那些看起来像列表的东西了。Python思想的一部分是duck typing

I see a bird that walks like a duck and swims like a duck and quacks like a duck, I call that bird a duck

换句话说,您不应该要求对象是lists,只要它们有您需要的方法。collections模块提供了一堆抽象基类,它们有点像Java接口。例如,作为collections.Sequence实例的任何类型都将支持索引。

相关问题 更多 >