python - 如何找到列表中连续元素序列的总和?
问题描述
我需要编写一个给定整数列表的函数,如果列表包含一个连续的值序列,其总和为,L
则返回,否则返回。True
n
False
假设我的列表是: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
。我知道切片可以解决一些问题,但我不知道它是什么。
解决方案
天真的方法是遍历每个起始潜在起点(每个索引)和每个窗口大小(从 0 到列表长度的任何数字):
def consecutive(L, n):
for i in range(len(L)):
for window_size in range(len(L)):
if sum(L[i:i + window_size]) == n:
return True
else:
return False
请注意,这可以很容易地改进,首先不要多次检查相同的窗口(例如,如果列表长度为 3,那么L[2:4]
和L[2:3]
将是同一件事)。
推荐阅读
- php - 用户的个人资料 URL
- xamarin.forms - 如果另一个控件在同一页面上可见,如何将 XAML 中的控件设置为可见
- julia - JuMP 查询解决方案在 for 循环中不起作用
- c++ - 从 Julia 调用 C/C++
- r - 将 geom_ridgeline 与日志 y 轴一起使用
- angular - Angular Material 拖放 CDK - 将单个元素(独立)拖放到列表中
- python - 当“div”标签和类名存在时,python中的beautifulsoup不返回任何内容
- android - 使用复杂风味树更改 google-services.json 的搜索位置
- python - Python 请求在特定机器上非常慢
- python - 无法保存子类化的 TensorFlow 2.1 模型——__call__() 缺少 1 个必需的位置参数:“x”