gpt4 book ai didi

python - 如何检查第一个列表是否以相同的顺序出现在第二个列表中的某个位置

转载 作者:太空宇宙 更新时间:2023-11-03 18:09:58 26 4
gpt4 key购买 nike

编写一个名为 sublist 的函数。该函数采用 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() 内部的部分是 generator ,我们将从头到尾比较子列表 (list1) 与 list2 中的每个子列表。

i 的范围是从 0 到第二个列表的长度,但是减去第一个列表的长度然后添加 1,这样就不会超过第二个列表的末尾索引。

关于python - 如何检查第一个列表是否以相同的顺序出现在第二个列表中的某个位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26171474/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com