【问题标题】:How to efficiently find if a list exist inside of another list python如何有效地查找列表是否存在于另一个列表python中
【发布时间】:2021-08-08 03:59:04
【问题描述】:

我想确定是否可以在 python 中的另一个字符串列表中找到一个字符串列表。

例如:

list1 = ['iguana','cat','spider','monkey','dog']
list2 = ['cat','dog']

result = False

for i in list1:
    for j in list2:
        if list1[i] == list2[j]
            result = True

print(result)

结果是正确的,但这似乎会导致更大的列表出现问题

有没有什么方法可以用更简洁的代码更有效地搜索第一个列表?

【问题讨论】:

  • 将一个转换为一组,然后使用.issubset/.issuperset(取决于您转换了哪个)
  • 我很困惑,我不熟悉子集我该怎么做?
  • 你可以尝试使用“set()”来检查是否有交集。
  • 谢谢@DeepSpace 我想通了,它可以工作

标签: python list search boolean processing-efficiency


【解决方案1】:

您的问题专门针对列表。我假设您正在尝试确定list2 中的所有元素是否都在list1 中。如果是这样,那么我们正在谈论集合,那么这将是一个解决方案:

set1 = {"iguana", "cat", "spider", "monkey", "dog"}
set2 = {"cat", "dog"}
print(set2.issubset(set1))

【讨论】:

    【解决方案2】:

    您可以使用列表推导来试一试

    list1 = ['iguana','cat','spider','monkey','dog']
    list2 = ['cat','dog']
    
    if [animal for animal in list2 if animal in list1] == list2:
        print(True)
    else:
        print(False)
    

    或者您可以使用.issubset。但似乎其他人已经建议了。

    【讨论】:

    • 这个解是O(n^2),设置解是O(n)
    • 好的...感谢您提供此信息。
    【解决方案3】:

    有一种结构叫做集合。它具有非常有效的功能,检查元素是否存在于集合中。它还具有检查另一个集合是否是它的子集的功能。 例如,您有两个列表。

    list1 = ['iguana','cat','spider','monkey','dog']
    list2 = ['cat','dog']
    

    您可以从它们创建两个集合,并检查 list2 的所有元素是否像这样出现在 list1 中(如果这是您想要的)。

    set1 = set(list1)
    set2 = set(list2)
    answer = set2.issubset(set1)
    

    【讨论】:

      猜你喜欢
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-12
      • 2021-01-18
      • 1970-01-01
      相关资源
      最近更新 更多