介绍

今天遇到一个需求,要求从一个无序列表中求取连续元素之和中最大的和。使用python做了实现,后来想着可以作为一个小知识点分享出来,或许能在某时某刻给某位同学一些帮助。下面就直接上代码(图片和文字):

一、图片内容

简单版源码、调用、调用结果

扩展版源码、调用、调用结果

二、文字内容

1、简单版

说明:

  1. 传参必须是列表,否则会抛异常
  2. 返回值为符合要求的和

源码:

def getMaxSum(li):    # 要求计算给定列表中连续元素的和中最大的值    sumList = []    for i in range(0, len(li)):        jj = i + 1        maxIndex = len(li)        # while jj < maxIndex+1:  # 包含单元素        while jj < maxIndex:  # 至少两个元素            subList = [li[i]]            subList.extend([li[ii] for ii in range(jj, maxIndex)])            sumList.append(sum(subList))            maxIndex -= 1    return max(sumList)

调用:

if __name__ == '__main__':    print('结果1:', getMaxSum([3, -4, 2, -4, -9, 8, -7]))    print('结果2:', getMaxSum([3, 4, 2, 4, 9, 8, 7]))    print('结果3:', getMaxSum([-3, -4, -2, -4, -9, -8, -7]))    print('结果4:', getMaxSum([0, 0, 0, 0]))

调用结果:

结果1: 1结果2: 37结果3: -6结果4: 0

2、扩展版

说明:

  1. 传参必须是数字列表,否则返回-1
  2. 返回值为一个元组,第一个元素为所求的最大和,第二个元素为一个列表,列表中的是符合条件的连续元素组成的列

源码:

def getMaxSum(li):    # 要求计算给定列表中连续元素的和中最大的值,并返回对应的元素    # 如果传参不是列表类型或者列表元素中有非数字元素,返回False    if not isinstance(li, list) or [x for x in li if not isinstance(x, (int, float))]:       return False    sumList = []    subList = []    targetList = []    # 处理目标列表    for i in range(0, len(li)):        jj = i + 1        maxIndex = len(li)        # while jj < maxIndex+1:  # 包含单元素        while jj < maxIndex:   # 至少两个元素            temSubList = [li[i]]            temSubList.extend([li[ii] for ii in range(jj, maxIndex)])            temMaxSum = sum(temSubList)            subList.append([temSubList, temMaxSum])            sumList.append(temMaxSum)            maxIndex -= 1    # 获取连续元素之和中最大的值    targetSum = max(sumList)    # 获取符合要求的元素的列表    for item in subList:        temSum = item[1]        if temSum == targetSum:            targetList.append(item[0])    # 返回元组,第一个元素为所求的最大和,第二个元素为一个列表,列表中的是符合条件的连续元素组成的列表,可能有多个    return targetSum, targetList

调用:

if __name__ == '__main__':    print('结果1:', getMaxSum([3, -4, 2, -4, -9, 8, -7]))    print('结果2:', getMaxSum([3, 4, 2, 4, 9, 8, 7]))    print('结果3:', getMaxSum([-3, -4, -2, -4, -9, -8, -7]))    print('结果4:', getMaxSum([0, 0, 0, 0]))    print('结果5:', getMaxSum([3, -4, 2, -4, '-9', 8, -7]))

调用结果:

结果1: (1, [[3, -4, 2], [8, -7]])结果2: (37, [[3, 4, 2, 4, 9, 8, 7]])结果3: (-6, [[-4, -2], [-2, -4]])结果4: (0, [[0, 0, 0, 0], [0, 0, 0], [0, 0], [0, 0, 0], [0, 0], [0, 0]])结果5: False

求列表最大元素不用max_python3实现从一个无序列表中求取连续元素之和中最大的和...相关推荐

  1. 第J题-=数组中等于K的数对(详解) =======给出一个整数K和一个无序数组A,A的元素为N个互不相同的整数

    给出一个整数K和一个无序数组A,A的元素为N个互不相同的整数,找出数组A中所有和等于K的数对.例如K = 8,数组A:{-1,6,5,3,4,2,9,0,8},所有和等于8的数对包括(-1,9),(0 ...

  2. HTML---文本样式---行高---字符间距---文本对齐方式---文本使用线条修饰---文本的大小写---处理元素内的空白---字体样式---无序列表有序列表---表格

    文章目录 文本样式 color direction line-height letter-spacing text-align text-indent text-decoration text-tra ...

  3. 有两个序列a,b,大小都为n,序列元素的值任意整数,无序;要求:通过交换a,b中的元素,使[序列a元素的和

    原题:有一序列a,大小为n,分为2部分,序列元素的值任意整形数,无序: 要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小,用python写. #coding=utf- ...

  4. html无序列表怎么加上小圆点,ul li html无序列表标签组学习

    属于无序列表组合标签-是html列表标签组合. html网页代码经常使用ul li列表机关标签. ul li 一.不能撮合 ul下只能放li标签,li标签内可以纵脱何标签,虽然也大要在li内再放ul ...

  5. php 文章列表,ThinkPHP初学者:主页,获取一个文章列表

    在之前的文章,已经实现了注册登录的功能,主要熟悉TP与HTML.JS交互,数据库的基本操作等.接下来就要登录到主页,熟悉一下列表的处理,以及数据库多表联查操作.为了简化模型,列表的字段仅有文章标题.简 ...

  6. html无序列表文字换行,ppwjs之bootstrap文字排版:无序列表项不换行

    ppwjs欢迎您 //程序开始 引入(_sys_bootstrap4_all_addr + ".js",$真); var 标题1 = "以下为有序列表的默认格式和不换行格 ...

  7. java对一个无序列表进行分组

    对一个集合的数据进行分组 /*** rCount : 11* rData : [{"area_id":"1","up_area_id":&q ...

  8. python 一维数组所有元素是否大于_如何最好在python中将一维数组连续元素分组...

    我有以下一维数组: [0, 0, 0, 1, 0, 0, 16, 249, 142, 149, 189, 135, 141, 146, 294, 3, 2, 0, 3, 3, 6, 2, 3, 4, ...

  9. 用html编写一个无序列表,输出HTML无序列表python

    看起来你在试图建立一个网站.为什么不使用一个模板引擎,比如Jinja2,而不是从函数中打印一个HTML片段呢?为此,您将需要一个Python web应用程序,它似乎是在一个web框架中编写的.我会选择 ...

最新文章

  1. Yii的数值唯一性-场景与SQL
  2. C++ Primer 7.33 练习编写成员函数
  3. 盗贼之海3月22服务器维护,盗贼之海3月29日更新公告_3月29日更新了什么_52pk单机游戏...
  4. 七步从Angular.JS菜鸟到专家(2):Scopes
  5. 实例1.1:通过HWND获得CWnd指针
  6. Spring boot 第一章 Spring发展历史
  7. 物联网火爆,开发者却遇到这个大难题!
  8. cnocr:用来做中文OCR的Python3包,装上就能用!
  9. 贺利坚老师汇编课程37笔记:把六个字符串里的头一个字母改写成大写字母
  10. Linux应用层24点小游戏,C++ Builder构建算二十四点小游戏
  11. html视频如何转换成mp4视频格式,如何将把视频文件转换成MP4格式?先说两种方法...
  12. Mac音频录制软件哪个好 怎么录制屏幕声音
  13. 老树新芽 体验Visual Basic 9.0新功能
  14. 关于Protel 2004 绘制电路原理图——遇到的一些小问题
  15. Docker笔记-04 仓库
  16. 一文搞懂FIFO深度计算
  17. 写一本书作者到底能拿到多少稿酬?
  18. Cesium淹没分析(干货)
  19. oracle ALTER 用法
  20. 全球与中国IC托盘行业调查与未来发展趋势研究报告

热门文章

  1. 通过串口关闭Linux服务器
  2. 6.Java集成开发环境
  3. 使用webpack2.0 搭建react.js项目
  4. OpenGL超级宝典笔记——累积缓冲区与其他颜色操作
  5. 如何更改应用在app store的名称
  6. leetcode50. Pow(x, n)
  7. weblogic介绍
  8. APPIUM Android 定位方式
  9. vagrant学习笔记
  10. 校园资源建设平台源代码