python使用隐式循环快速求和的实现示例


Posted in Python onSeptember 11, 2020

如何快速的求出1到x的和呢?代码如下:

NB(注意): # 后面的部分表示输出结果。

class Debug:
  def calculateSum(self, size):
    return sum(range(size))


if __name__ == "__main__":
  main = Debug()
  result = main.calculateSum(101)
  print(result)          # 5050

 这里我们想要求出1-100的和,因为range(101)最后的值是100,所以range()的参数应该取101而不是100,1到100的和我们早已耳熟能详,答案是5050。可以看到我i们使用sum()和range()函数的组合就求出了1-100的和,这里其实是运用了for的隐式循环.。严格地说此段代码实际上计算的是0-100的和,但是因为0并不影响最终求和的结果,故这里可以等同为1-100的和。上述代码和下面的代码等效。代码如下:

class Debug:
  def calculateSum(self, size):
    _sum = 0
    for i in range(size):
      _sum += i
    return _sum


if __name__ == "__main__":
  main = Debug()
  result = main.calculateSum(101)
  print(result)          # 5050

我们知道,range(101)的结果为range(0, 101),想要获取它的展开形式我们需要用list进行转换并查看,因此当我们使用sum()函数对其进行求和运算的时候,事实上是遍历了它中间的每一个元素,也就是使用了隐式循环。

print(range(101))  # range(0, 101)
print(list(range(101)))
"""
result :
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100]
"""

那么进一步我们可不可能将快速求和进行推广呢?是可以的,我们可以用此种方法计算出任意的等差数列的和。代码如下:

class Debug:
  def calculateSum(self, start, end, gap):
    return sum(range(start, end, gap))


if __name__ == "__main__":
  main = Debug()
  result = main.calculateSum(0, 101, 2)
  print(result)          # 2550

这里我们计算了0-100中差值为2的等差数列的和。

到此这篇关于python使用隐式循环快速求和的实现示例的文章就介绍到这了,更多相关python 隐式循环快速求和内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
使用python实现tcp自动重连
Jul 02 Python
Python简单实现两个任意字符串乘积的方法示例
Apr 12 Python
Python爬虫实现全国失信被执行人名单查询功能示例
May 03 Python
详解Django中六个常用的自定义装饰器
Jul 04 Python
python 处理string到hex脚本的方法
Oct 26 Python
Python实现html转换为pdf报告(生成pdf报告)功能示例
May 04 Python
使用OpCode绕过Python沙箱的方法详解
Sep 03 Python
python2与python3爬虫中get与post对比解析
Sep 18 Python
如何安装2019Pycharm最新版本(详细教程)
Sep 26 Python
python路径的写法及目录的获取方式
Dec 26 Python
Pytorch转keras的有效方法,以FlowNet为例讲解
May 26 Python
python绘制高斯曲线
Feb 19 Python
Python实现加密的RAR文件解压的方法(密码已知)
Sep 11 #Python
降低python版本的操作方法
Sep 11 #Python
Django crontab定时任务模块操作方法解析
Sep 10 #Python
Django日志及中间件模块应用案例
Sep 10 #Python
Django nginx配置实现过程详解
Sep 10 #Python
使用Python操作MySQL的小技巧
Sep 10 #Python
python编写实现抽奖器
Sep 10 #Python
You might like
php 无限级 SelectTree 类
2009/05/19 PHP
浅析PHP substr,mb_substr以及mb_strcut的区别和用法
2013/06/21 PHP
destoon在各个服务器下设置URL Rewrite(伪静态)的方法
2014/06/21 Servers
给ECShop添加最新评论
2015/01/07 PHP
PHP笛卡尔积实现算法示例
2018/07/30 PHP
基于jquery自己写tab滑动门(通用版)
2012/10/30 Javascript
js onclick事件传参讲解
2013/11/06 Javascript
详解参数传递四种形式
2015/07/21 Javascript
jQuery实现图片上传和裁剪插件Croppie
2015/11/29 Javascript
JavaScript中字符串与Unicode编码互相转换的实现方法
2015/12/18 Javascript
谈谈我对JavaScript DOM事件的理解
2015/12/18 Javascript
AngularJS 整理一些优化的小技巧
2016/08/18 Javascript
Vue.js每天必学之过滤器与自定义过滤器
2016/09/07 Javascript
让div运动起来 js实现缓动效果
2017/07/06 Javascript
解决koa2 ctx.render is not a function报错问题
2018/08/07 Javascript
bootstrapTable+ajax加载数据 refresh更新数据
2018/08/31 Javascript
图文讲解vue的v-if使用方法
2019/02/11 Javascript
vue设置全局访问接口API地址操作
2020/08/14 Javascript
openlayers4.6.5实现距离量测和面积量测
2020/09/25 Javascript
解决vant框架做H5时踩过的坑(下拉刷新、上拉加载等)
2020/11/11 Javascript
springboot+vue实现文件上传下载
2020/11/17 Vue.js
[41:41]TFT vs Secret Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
Python脚本实现代码行数统计代码分享
2015/03/10 Python
Python格式化输出%s和%d
2018/05/07 Python
对python字典元素的添加与修改方法详解
2018/07/06 Python
Python + OpenCV 实现LBP特征提取的示例代码
2019/07/11 Python
PyQt5中QTableWidget如何弹出菜单的示例代码
2020/02/23 Python
用css3实现当鼠标移进去时当前亮其他变灰效果
2014/04/08 HTML / CSS
详解CSS3浏览器兼容
2016/12/14 HTML / CSS
美国购买隐形眼镜网站:Lenses For Less
2020/07/05 全球购物
领班岗位职责范文
2014/02/06 职场文书
英语专业求职信
2014/07/08 职场文书
2015年元旦晚会活动总结(学生会)
2014/11/28 职场文书
2015年档案室工作总结
2015/05/23 职场文书
解决Jenkins集成SonarQube遇到的报错问题
2021/07/15 Java/Android
python数字图像处理:图像简单滤波
2022/06/28 Python