首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python:整数的最小和子列表

Python:整数的最小和子列表
EN

Stack Overflow用户
提问于 2013-02-25 02:37:01
回答 1查看 1.9K关注 0票数 1

Python的麻烦:我在如何处理这个程序上遇到了很多麻烦。有人能帮我吗,或者至少给我一个提示这个程序的要求?

5.37写入函数mssl() (最小和子列表),它以整数列表作为输入。然后,它计算并返回输入列表的最大和子列表的和。最大和子列表是输入列表的子列表(片),其条目和最大。空子列表被定义为有和0。例如,列表的最大和子列表。

代码语言:javascript
运行
复制
[4, -2, -8, 5, -2, 7, 7, 2, -6, 5]
is [5, -2, 7, 7, 2] and the sum of its entries is 19.
>>> l = [4, -2, -8, 5, -2, 7, 7, 2, -6, 5]
>>> mssl(l)
19
>>> mssl([3,4,5])
12
>>> mssl([-2,-3,-5])
0
EN

回答 1

Stack Overflow用户

发布于 2013-02-25 15:30:04

首先,您被要求查找列表中所有可能的子列表。如果您的列表是[3,4,5],那么所有可能的子列表都是:

代码语言:javascript
运行
复制
[]
[3]
[3,4]
[3,4,5]
[4]
[4,5]
[5]

您可以使用嵌套的循环播放切片来完成这一任务。

代码语言:javascript
运行
复制
l = your_list
for start in xrange(len(l)):
  for end in xrange(1, len(l)+1):
    current_sublist = l[start:end]

接下来,您的任务是查找所有这些子列表的最大和。一种方法是,如果当前子列表的和大于以前的任何和,则在循环中创建一个局部变量更新它。让我们把它包装成一个函数:

代码语言:javascript
运行
复制
def mssl(l):
  f = 0
  for start in xrange(len(l)):
    for end in xrange(1, len(l)+1):
      s = sum(l[start:end]) 
      if s > f: 
        f = s
  return f

让我们来测试一下:

代码语言:javascript
运行
复制
print mssl([4, -2, -8, 5, -2, 7, 7, 2, -6, 5])
print mssl([3,4,5])
print mssl([-2,-3,-5])

输出:

代码语言:javascript
运行
复制
19
12
0

一次衬垫,用于良好的测量:

代码语言:javascript
运行
复制
l = [4, -2, -8, 5, -2, 7, 7, 2, -6, 5]
max(sum(l[s:e]) for s in xrange(len(l)) for e in xrange(1, len(l)+1))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15059256

复制
相关文章

相似问题

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