gpt4 book ai didi

python - 确定列表中的所有元素是否都存在并且在另一个列表中的顺序相同

转载 作者:太空狗 更新时间:2023-10-29 21:15:28 25 4
gpt4 key购买 nike

我如何创建一个函数 sublist() 接受两个列表,list1list2,并返回 True 如果 list1list2 的子列表,否则为 Falselist1list2 的子列表,如果 list1 中的数字出现在 list2 中的顺序与它们出现在list1,但不一定连续。例如,

>>> sublist([1, 12, 3],[25, 1, 30, 12, 3, 40])
True

>>> sublist([5, 90, 2],[90, 20, 5, 2, 17])
False

最佳答案

这是一种使用迭代器在线性时间(和常量空间)内执行此操作的方法:

def sublist(a, b):
seq = iter(b)
try:
for x in a:
while next(seq) != x: pass
else:
return True
except StopIteration:
pass
return False

基本上它会遍历子列表的每个元素,并查看是否可以在尚未查看的完整列表部分中找到相同的元素。如果它通过了整个子列表,则意味着我们有一个匹配项(因此 for 循环中的 else 语句)。如果我们用完了要在完整列表中查看的元素,则意味着我们没有匹配项。

编辑:我已经更新了我的解决方案,因此它适用于 Python 3。对于 Python 2.5 及更早版本,next(seq) 需要替换为 seq.next().

关于python - 确定列表中的所有元素是否都存在并且在另一个列表中的顺序相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23667731/

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