python - 检查列表中的子列表

标签 python sublist

问题是:你要编写一个名为 isSublist() 的函数,它接受两个参数 (list, sublist) 并返回 1 如果 sublist 是 list 的子列表,否则为 0。

所以我有我的代码,但是当子列表不在列表中时我得到 True。请问有什么解决这个问题的建议吗?

 def isSublist(list, sublist):
    for i in range(len(list)-(len(sublist))+1):
        return True
    if sublist==list[i:i+(len(sublist))]:
        return False

示例输入:

list= (0,1,2,3,4,5,6,7,8,9)
isSublist(list, [1,2,3])
output:
True

最佳答案

您可以通过获取子列表大小的所有切片并比较相等性来分解它:

def n_slices(n, list_):
    for i in xrange(len(list_) + 1 - n):
        yield list_[i:i+n]

def isSublist(list_, sub_list):
    for slice_ in n_slices(len(sub_list), list_):
        if slice_ == sub_list:
            return True
    return False

涵盖订购问题。根据定义,列表是有序的。如果我们想忽略排序,你可以做集合:

def isSubset(list_, sub_list):
    return set(sub_list) <= set(list_)

如果我们需要覆盖重复元素并忽略顺序,那么您现在就处于多重集领域:

def isSubset(list_, sub_list):
    for item in sub_list:
        if sub_list.count(item) > list_.count(item):
            return False
    return True

关于python - 检查列表中的子列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19990861/

相关文章:

python - 获取 TypeError : type() argument 1 must be string, 而不是 None

python - 如何确定另一个Python文件中是否存在变量

python - ImportError : Couldn't import Django . ..您是否忘记激活虚拟环境?

python - 根据值和规则拆分整数列表的更好方法

python - 从 Python 列表中删除多个项目

python - ReGex:从重复序列中获取多个匹配

java - 在 Java 中,如何迭代 ArrayList 的子列表?

Python:如果包含/不包含顺序相同,则从列表中删除子列表

java - 多个列表或列表和 getSublist() (Java)

python - 查找(开始:end) positions that sublists occur within a list . Python