python - 如果列表位于其他列表内的 bool 表达式

标签 python list contains sub-array

检查一个列表是否在另一个列表中的有效方法是什么?像这样的东西:

[2,3] in [1,2,3,4]      #evaluates True
[1,5,4] in [5,1,5,4]    #evaluates True
[1,2] in [4,3,2,1]      #evaluates False

列表中的顺序很重要。

最佳答案

def check_ordered_sublist_in_list(sub_list, main_list):
    sub_list = np.array(sub_list)
    main_list = np.array(main_list)
    return any(all(main_list[n:(n + len(sub_list))] == sub_list) 
               for n in range(0, len(main_list) - len(sub_list) + 1))

>>> check_ordered_sublist_in_list([2, 3], [1, 2, 3, 4])
True

>>> check_ordered_sublist_in_list([1, 5, 4], [5, 1, 5, 4])
True

>>> check_ordered_sublist_in_list([1, 2], [4, 3, 2, 1])
False

这会将列表转换为 numpy 数组(以提高计算效率),然后使用切片来检查 sub_list 是否包含在切片内。任何成功都会返回 True。

关于python - 如果列表位于其他列表内的 bool 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38885658/

相关文章:

python - 在 python 中过滤/迭代非常大的列表

python - 覆盖来自 Twisted.web 的所有默认资源/响应

c# - 如何从 List<T> 中删除重复项?

python - 在两个文件夹中查找名称首字母相同的文件

python - 检查一个字符串是否包含 Python 列表中的任一字符串

javascript - 如何检查文档是否包含元素

python - Python的freeze.py未安装在Windows上

c# - 如何使用 String.Contain 函数使用其 ascii 字符来查找字符串是否具有回车符?

c# - 在 C# 中,检查 stringbuilder 是否包含子字符串的最佳方法

python - Django 应用程序中不同级别的用户角色