检查Python中是否存在切片列表我想编写一个函数来确定子列表是否存在于更大的列表中。list1 = [1,0,1,1,1,0,0]list2 = [1,0,1,0,1,0,1]#Should return truesublistExists(list1, [1,1,1])#Should return falsesublistExists(list2, [1,1,1])有没有Python功能可以做到这一点?
3 回答
![?](http://img1.sycdn.imooc.com/53339fdf00019de902200220-100-100.jpg)
暮色呼如
TA贡献1853条经验 获得超9个赞
让我们有点功能,好吗?:)
def contains_sublist(lst, sublst): n = len(sublst) return any((sublst == lst[i:i+n]) for i in xrange(len(lst)-n+1))
请注意,any()
将在lst内的第一个匹配停止 - 如果没有匹配则失败,在O(m * n)操作之后停止
![?](http://img1.sycdn.imooc.com/545868330001e54e02200220-100-100.jpg)
桃花长相依
TA贡献1860条经验 获得超8个赞
没有我所知道的功能
def sublistExists(list, sublist): for i in range(len(list)-len(sublist)+1): if sublist == list[i:i+len(sublist)]: return True #return position (i) if you wish return False #or -1
正如马克所说,这不是最有效的搜索(它是O(n * m))。可以通过与字符串搜索非常相似的方式来处理此问题。
添加回答
举报
0/150
提交
取消