编写一个称为子列表的函数。该函数将2个列表作为参数,如果第一个列表中的项目以相同的顺序出现在第二个列表中某处,则返回True(否则,则返回False)。
这里有些例子:
>>> sublist([2, 3], [1, 2, 3, 4, 5]) True
>>> sublist([1, 3], [1, 2, 3, 4, 5]) False
>>> sublist([1, 2, 3], [1, 2, 1, 2, 3, 4]) True
这是我到目前为止的内容:
def sublist(list1,list2):
for i in range(len(list2)):
if list2[i] != list1[i]:
return False
return True
输出:
>>> sublist([2,3],[1,2,3,4,5])
False
>>> sublist([1,3],[1,2,3,4,5])
True
>>> sublist([1,2,3],[1,2,1,2,3,4])
True
我知道这并不完全正确,我知道我将不得不使用[:]提取字符串或列表的一部分,但是我不知道从哪里开始。任何帮助都会很棒,谢谢。
试试这个:
def sublist(list1, list2):
n = len(list1)
return any((list1 == list2[i:i + n]) for i in range(len(list2) - n + 1))
print sublist([2, 3], [1, 2, 3, 4, 5])
print sublist([1, 3], [1, 2, 3, 4, 5])
print sublist([1, 2, 3], [1, 2, 1, 2, 3, 4])
我们需要知道子列表的长度,这就是n的含义。
然后any()将在可迭代的第一个匹配项之后停止。any()内部的部分是一个生成器,我们正在将子列表(list1)与list2中的每个子列表进行比较,从头到尾。
i
范围从0到第二个列表的长度,但是您要减去第一个列表的长度,然后再加1,因此不会超过索引的末尾。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句