当前位置: 代码迷 >> python >> 如何查看列表是否包含Python中的另一个列表?
  详细解决方案

如何查看列表是否包含Python中的另一个列表?

热度:36   发布时间:2023-06-13 15:30:23.0

我如何检查列表是否包含其他列表? 我需要它

[['cow'], 12, 3, [[4]]]

将输出True ,而类似的东西

['cow', 12, 3, 4]

会输出False

如果您还想查找列表的子类,那么您应该使用 :

def any_list_in(obj):
    return any(isinstance(item, list) for item in obj)

条件为True 停止,因此只需要检查所需的项目数。

>>> any_list_in([['cow'], 12, 3, [[4]]])
True

>>> any_list_in(['cow', 12, 3, 4])
False

isinstance(item, list) for item in objisinstance(item, list) for item in obj是一个 ,其工作方式类似于for -loop或list-comprehension。 它也可以写成(更长和稍慢但可能更好理解):

def any_list_in(obj):
    for item in obj:
        if isinstance(item, list):
            return True
    return False

这是一个使用列表理解的简洁解决方案。

给定obj = [['cow'], 12, 3, [[4]]] ,我们将首先使用列表推导来获取obj中的类型列表:

>>> [type(x) for x in obj]
[<type 'list'>, <type 'int'>, <type 'int'>, <type 'list'>]

现在,我们只需检查list是否在我们创建的类型列表中。 让我们重新审视列表理解并将其转换为布尔表达式:

>>> list in [type(x) for x in obj]

那里,这很好,很短。 它有用吗?

>>> obj = [['cow'], 12, 3, [[4]]]
>>> list in [type(x) for x in obj]
True
>>> obj = ['cow', 12, 3, 4]
>>> list in [type(x) for x in obj]
False

如果列表中没有包含'['int'的字符串,则可以使用此方法。

def check(a):
   a=str(a)
   if a.count('[')==1:  # or a.count(']')==1;
      return False
   return True

在python 2.7中我们有一个模块用于这项工作:(我不知道python 3.x中的任何这样的模块)

from compiler.ast import flatten    
def check(a):
    if flatten(a)==a:
        return False
    return True