求列表最大元素不用max_python3实现从一个无序列表中求取连续元素之和中最大的和...
介绍
今天遇到一个需求,要求从一个无序列表中求取连续元素之和中最大的和。使用python做了实现,后来想着可以作为一个小知识点分享出来,或许能在某时某刻给某位同学一些帮助。下面就直接上代码(图片和文字):
一、图片内容
简单版源码、调用、调用结果
扩展版源码、调用、调用结果
二、文字内容
1、简单版
说明:
- 传参必须是列表,否则会抛异常
- 返回值为符合要求的和
源码:
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
- 返回值为一个元组,第一个元素为所求的最大和,第二个元素为一个列表,列表中的是符合条件的连续元素组成的列
源码:
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实现从一个无序列表中求取连续元素之和中最大的和...相关推荐
- 第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 ...
- HTML---文本样式---行高---字符间距---文本对齐方式---文本使用线条修饰---文本的大小写---处理元素内的空白---字体样式---无序列表有序列表---表格
文章目录 文本样式 color direction line-height letter-spacing text-align text-indent text-decoration text-tra ...
- 有两个序列a,b,大小都为n,序列元素的值任意整数,无序;要求:通过交换a,b中的元素,使[序列a元素的和
原题:有一序列a,大小为n,分为2部分,序列元素的值任意整形数,无序: 要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小,用python写. #coding=utf- ...
- html无序列表怎么加上小圆点,ul li html无序列表标签组学习
属于无序列表组合标签-是html列表标签组合. html网页代码经常使用ul li列表机关标签. ul li 一.不能撮合 ul下只能放li标签,li标签内可以纵脱何标签,虽然也大要在li内再放ul ...
- php 文章列表,ThinkPHP初学者:主页,获取一个文章列表
在之前的文章,已经实现了注册登录的功能,主要熟悉TP与HTML.JS交互,数据库的基本操作等.接下来就要登录到主页,熟悉一下列表的处理,以及数据库多表联查操作.为了简化模型,列表的字段仅有文章标题.简 ...
- html无序列表文字换行,ppwjs之bootstrap文字排版:无序列表项不换行
ppwjs欢迎您 //程序开始 引入(_sys_bootstrap4_all_addr + ".js",$真); var 标题1 = "以下为有序列表的默认格式和不换行格 ...
- java对一个无序列表进行分组
对一个集合的数据进行分组 /*** rCount : 11* rData : [{"area_id":"1","up_area_id":&q ...
- 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, ...
- 用html编写一个无序列表,输出HTML无序列表python
看起来你在试图建立一个网站.为什么不使用一个模板引擎,比如Jinja2,而不是从函数中打印一个HTML片段呢?为此,您将需要一个Python web应用程序,它似乎是在一个web框架中编写的.我会选择 ...
最新文章
- Yii的数值唯一性-场景与SQL
- C++ Primer 7.33 练习编写成员函数
- 盗贼之海3月22服务器维护,盗贼之海3月29日更新公告_3月29日更新了什么_52pk单机游戏...
- 七步从Angular.JS菜鸟到专家(2):Scopes
- 实例1.1:通过HWND获得CWnd指针
- Spring boot 第一章 Spring发展历史
- 物联网火爆,开发者却遇到这个大难题!
- cnocr:用来做中文OCR的Python3包,装上就能用!
- 贺利坚老师汇编课程37笔记:把六个字符串里的头一个字母改写成大写字母
- Linux应用层24点小游戏,C++ Builder构建算二十四点小游戏
- html视频如何转换成mp4视频格式,如何将把视频文件转换成MP4格式?先说两种方法...
- Mac音频录制软件哪个好 怎么录制屏幕声音
- 老树新芽 体验Visual Basic 9.0新功能
- 关于Protel 2004 绘制电路原理图——遇到的一些小问题
- Docker笔记-04 仓库
- 一文搞懂FIFO深度计算
- 写一本书作者到底能拿到多少稿酬?
- Cesium淹没分析(干货)
- oracle ALTER 用法
- 全球与中国IC托盘行业调查与未来发展趋势研究报告