如何在列表中找到连续元素序列的总和?

阿尼玛

我需要编写一个函数,给出一个整数列表,如果列表包含一个连续的值序列,其总和为L则返回,否则返回TruenFalse

假设我的列表是:L = [2,2,4,4,0,0,2,8]and n= 3。该函数应该返回,False因为没有连续的值总和为 3。

要求:不允许使用 Python 的模块

我试过:

def consecutive(L,n):
    for i in range(len(L)):
        for j in range(i+1, len(L)):
            if sum(L[i:j+1])==n:
                return True
    return False
L = [2,2,4,4,0,0,2,8]
consecutive(L,3)

这是部分工作,因为当我设置时n=12,它返回True我知道切片需要解决一些问题,但我不知道它是什么。

将要

主要问题很简单:在这种情况下,范围必须是 len+1,否则在边缘情况下会失败。工作代码是:

def consecutive(L, n):
    for i in range(len(L)+1):
        for j in range(i+1,len(L)+1):
            s=sum(L[i:j])
            if s == n:
                print(i,j,s,'TRUE')  #DEBUG: remove when done
                #return True         #uncomment this to reintegrate
            else: print(i,j,s)       #DEBUG: remove when done

    return False

L = [2,2,4,4,0,0,2,-3]
consecutive(L,3)

更好的是,在您的示例中,您没有显示负数。如果您没有否定,您可以通过在超过搜索值 n 时跳过循环来提高代码效率:

def consecutive(L, n):
    for i in range(len(L)+1):
        for j in range(i+1,len(L)+1):
            s=sum(L[i:j])
            if s == n:
                print(i,j,s,'TRUE')     #DEBUG: remove when done
                #return True            #uncomment
            elif s > n:
                print(i,j,s,'too big')  #DEBUG: remove when done
                break
            else: print(i,j,s)          #DEBUG: remove when done

    return False

L = [2,2,4,4,0,0,2,1]
consecutive(L,3)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在列表Raku中找到相等元素的连续序列

如何在列表中找到定义的序列?

如何在列表中找到彼此之间每个元素的总和

如何在C ++数组中找到连续的“占用”元素?

如何在数组中找到总和 3 个元素?

如果它们是连续的,如何在列表中找到相同的数字?

如何在字典词典中找到列表长度的总和?

如何在多个列表中找到共同的元素?

如何在Python列表中找到元素[-1]的正索引

如何在列表中找到几个最常见的元素

如何在Prolog的嵌套列表中找到max元素?

如何在整数列表中找到缺失的元素?

如何在元组列表中找到所有最小元素?

如何在Scala列表中找到元素的最后出现?

如何在列表中找到具有属性的元素?

如何在表格列表行中找到元素

如何在DAML中的列表中找到特定元素的索引?

如何在列表Prolog中找到相同元素的数量?

如何在项目列表中找到偶数元素?

如何在haskell的函数中找到列表的中间元素?

如何在dict的項目中找到元素最多的列表?

如何在列中找到连续零?

如何在python时间序列数据框中找到连续事件的发生?

你如何在Java中找到一个序列的总和

如何在python 3中找到笛卡尔元素的总和?

如何在Swift中找到2d数组中所有元素的总和?

如何在Python中找到相同的序列

如何在给定的整数列表中找到连续的段对(功能上不是必须的)?

如何在列表中找到连续重复数字的第一个索引?