问题是:你要编写一个名为 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/