刷题时遇到这样一道题目,刚开始没有什么头绪,后来参考了给出的答案:
def is_sublist(l,s):
sub_set=False
if s==[]:
sub_set=True
elif s==l:
sub_set=True
elif len(s)>len(l):
sub_set=False
else:
for i in range(len(l)):
if l[i]==s[0]:
n=1
while(n<len(s))and (l[i+n]==s[n]):
n+=1
if n==len(s):
sub_set=True
return sub_set
print(is_sublist([1,2,3,4,7],[2,4]))
显然,答案考虑很全面,如果s==[]或者s==l,那么为True,如果len(s)>len(l),那么为False,可见写程序时要先把最简单的情况列出来,然后在else中,依次将l的每个元素与s[0]比较,如果相等,说明有可能为True,取n来作为l中与s相等的元素的个数,如果n<len(s)并且l[n+i]==s[n],此时满足,n+=1,如果循环完成n==len(s),返回True,最后对于其他情况,都是返回False。
理解了答案的思路之后,再自己下手写一遍:
def is_sublist(l,s):
sub_set=False
if s==[]:
sub_set=True
elif s==l:
sub_set=True
elif len(s)>len(l):
sub_set=False
else: