用一个Python程序来判断一个字符串是否是另一个字符串的sublist

本文通过一道编程题探讨如何判断一个字符串是否是另一个字符串的子列表。在分析错误代码的过程中,解释了Python中and运算符的执行顺序,以及在边界条件下可能出现的“list index out of range”错误。最后,给出了修正后的程序以避免这些错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

刷题时遇到这样一道题目,刚开始没有什么头绪,后来参考了给出的答案:

def is_sublist(l,s):
    sub_set=False
    if s==[]:
        sub_set=True
    elif s==l:
        sub_set=True
    elif len(s)>len(l):
        sub_set=False
    else:
        for i in range(len(l)):
            if l[i]==s[0]:
                n=1
                while(n<len(s))and (l[i+n]==s[n]):
                    n+=1
                if n==len(s):
                    sub_set=True
    return sub_set
print(is_sublist([1,2,3,4,7],[2,4]))

显然,答案考虑很全面,如果s==[]或者s==l,那么为True,如果len(s)>len(l),那么为False,可见写程序时要先把最简单的情况列出来,然后在else中,依次将l的每个元素与s[0]比较,如果相等,说明有可能为True,取n来作为l中与s相等的元素的个数,如果n<len(s)并且l[n+i]==s[n],此时满足,n+=1,如果循环完成n==len(s),返回True,最后对于其他情况,都是返回False。

理解了答案的思路之后,再自己下手写一遍:

def is_sublist(l,s):
    sub_set=False
    if s==[]:
        sub_set=True
    elif s==l:
        sub_set=True
    elif len(s)>len(l):
        sub_set=False
    else:
     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值