首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >编写仅针对特定数字序列返回true的Python 3函数

编写仅针对特定数字序列返回true的Python 3函数
EN

Stack Overflow用户
提问于 2018-08-06 08:29:01
回答 2查看 37关注 0票数 0

我是Python的新手,而且在很大程度上是编程新手。所以,如果这个问题听起来很基本,我很抱歉:

我只是尝试编写一个Python3函数,如果列表中存在特定的数字序列,则该函数返回true,而不管这些数字是否背靠背。例如,假设'0,0,7‘,但是这些特定的数字可能嵌入到一个更大的列表中,比如4,0,5,0,6,7。

我可以编写许多其他处理列表的函数,但这个问题让我感到困惑,因为数字的位置不是固定的。

我在for循环中尝试了len(range),但是我得到了语法错误,并且也不能理解逻辑。有人能帮上忙吗?

EN

回答 2

Stack Overflow用户

发布于 2018-08-06 08:45:39

您可以通过首先过滤掉大列表中不在子列表中的项目来创建过滤列表,这样您就可以在滚动窗口中轻松地迭代大列表以匹配子列表:

代码语言:javascript
复制
def is_in(sublist, large_list):
    subset = set(sublist)
    filtered = [i for i in large_list if i in subset]
    for i in range(len(filtered) - len(sublist) + 1):
        if filtered[i : i + len(sublist)] == sublist:
            return True
    return False
print(is_in([0, 0, 7], [4,0,5,0,6,7]))
print(is_in([0, 0, 7], [4,0,5,6,7]))

这将输出以下内容:

代码语言:javascript
复制
True
False
票数 0
EN

Stack Overflow用户

发布于 2018-08-06 08:53:49

一种简洁且相对有效的解决方案是遍历needle的元素,并始终尝试在haystack的其余部分中找到它的第一个匹配项

代码语言:javascript
复制
def istherehidden(needle,haystack):
    hsp=0
    try:
        for i in needle:
            hsp+=1+haystack[hsp:].index(i)
        return True
    except ValueError:
        return False

现在istherehidden([4,5,7],[4,0,5,0,6,7])返回True和istherehidden(5,4,7,4,0,5,0,6,7)returnsFalse`.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51699283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档