因此,我必须检查是否检查列表中是否存在子列表,并且还必须按顺序出现在列表中。如果列表中存在子列表,则该函数应返回true。如果不是,它应该返回false。我创建了一个试图这样做的函数,有人可以告诉我,如果我在正确的轨道上或我应该修复什么,b / c现在它不起作用。
def subfunc(L,sublist):
for i in range (len(L)):
if L[i:i+len(sublist)] == sublist:
print "true"
else:
print "false"
例如,如果子列表为[3,4]
且列表为[0,1,2,3,4,5]
,则应返回true。如果子列表为[5,1]
,则它应该返回false。
答案 0 :(得分:0)
>>> def check(L, subL):
... for i in range(len(L)-len(subL)+1):
... if L[i:i+len(subL)] == subL:
... return True
... return False
...
>>> check(L, [4,5])
True
>>> check(L, [3,4])
True
>>> check(L, [5,1])
False
答案 1 :(得分:0)
您的主要问题是您为每个职位发放了一个值(真或假)。没有在第一个位置找到子列表并不意味着以后找不到它,所以你应该等到找到它(停止迭代并在找到它时在第一个位置返回True
),或者你确定没有(在你完成所有元素之后返回False
,并且他们“不是它”)。
答案 2 :(得分:0)
你很亲密!
def subfunc(L,sublist):
for i in range (len(L)-len(sublist)+1):
if L[i:i+len(sublist)] == sublist:
return True
return False
False需要在循环之外,所以如果循环结束但没有成功,那么将返回false。此外,您只想循环len len(L)-len(子列表)+1。
答案 3 :(得分:0)
这似乎可以解决边缘问题:
def subfunc(L,sublist):
sublen = len(sublist)
for i in xrange(len(L)-sublen+1):
if L[i:i+sublen] == sublist:
return True
return False
L = [0,1,2,3,4,5]
print subfunc(L, [0,1]) # --> True
print subfunc(L, [5,1]) # --> False
print subfunc(L, [4,5]) # --> True