首页 >后端开发 >Python教程 >如何在 Python 中有效地确定较大列表中子列表的存在?

如何在 Python 中有效地确定较大列表中子列表的存在?

Patricia Arquette
Patricia Arquette原创
2024-10-26 22:33:31470浏览

How Can You Efficiently Determine Sublist Presence Within a Larger List in Python?

在 Python 中搜索列表是否存在子列表

识别较大列表中是否存在子列表是一项常见的编程任务。 Python 使用自定义函数为这个问题提供了一个简单的解决方案。

问题表述:

给定两个列表 list1 和 list2,确定 list2 的元素是否存在为list1 中的连续序列。考虑以下测试用例:

<code class="python">list1 = [1,0,1,1,1,0,0]
list2 = [1,0,1,0,1,0,1]

# Should return True
sublistExists(list1, [1,1,1])

# Should return False
sublistExists(list2, [1,1,1])</code>

实现:

Python 的函数式编程功能允许使用 any() 函数和列表推导式提供简洁的解决方案:

<code class="python">def contains_sublist(lst, sublst):
    n = len(sublst)
    return any((sublst == lst[i:i+n]) for i in range(len(lst)-n+1))</code>

这个函数有两个参数:lst(主列表)和sublst(要搜索的子列表)。它计算 sublst 的长度并使用列表理解来生成 lst 内的索引范围序列。对于每个范围,它将 sublst 与 lst 中的相应元素进行比较。如果找到匹配项,any() 返回 True;否则,返回 False。

用法示例:

在提供的测试用例中, sublistExists(list1, [1,1,1]) 返回 True , sublistExists( list2, [1,1,1]) 返回 False,如预期。

注意:

any() 函数通过在第一个匹配处终止来优化搜索。该函数的时间复杂度为 O(m*n),其中 m 是 lst 的长度,n 是 sublst 的长度。

以上是如何在 Python 中有效地确定较大列表中子列表的存在?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn