四种Python均匀浮点数生成方法

来源 :电脑报 | 被引量 : 0次 | 上传用户:WEIFINDYOU
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  众所周知,在Python中可构造“for i in range(100):”语句来执行100次循环,因为“range(100)”就相当于“range(0,100,1)”,是以1为步长、左闭(包括0)右开(不包括100)的;如果在该循环中被执行的语句是“print(i,end=‘ ’)”的话,那就会打印输出0、1、2……98、99共100个整数。按照这个办法是否可以使用range()函数来生成类似的均匀浮点数呢?比如0.00、0.01、0.02……0.98、0.99共100个浮点数。如果直接构造“for i in range(0,1,0.01):”,Python就会给出“TypeError: ‘float’ object cannot be interpreted as an integer”的错误提示,意思是“类型错误:浮点型对象不能解释为整数型”,因为range()函数接收的参数必须是整数(可以是负数),而不能直接处理float浮点数。那么,如何解决均匀浮点数生成问题呢?
  方法1:while循环控制变量i自增
  首先建立并给变量i赋值为0.00;接着构造“while i <= 1.00:”循环,其中的第一条语句为“print(‘%.2f’%i,end=‘ ’)”,即以一个空格分隔并保留两位小数输出变量i的值;第二条语句为“i += 0.01”,即控制i的自增,步长为0.01。运行程序,得到了从0.00到0.99共100个均匀浮点数(如图1)。



  方法2:使用列表推导式
  Python的列表推导式非常灵活,能够以非常简洁的方式来快速生成满足特定需求的列表。比如直接使用一条“my_list = [i/100 for i in range(100)]”语句,即可在列表my_list中得到符合要求的100个浮点数,其实就是将“for i in range(100)”所得到的0-99分别进行了“i/100”的计算。最后再使用for循环以同样的方式来打印输出,同样也得到了100个均匀浮点数,print中的“‘%.2f’%”表示显示保留两位小数的浮点数(如图2)。



  方法3:借用numpy庫中的arange()
  numpy库中有个与Python的range()函数功能类似的arange(),但它支持浮点数运算且使用方法类似,一样是“初始值、终值、步长”参数调用。在使用“import numpy as np”语句以np为别名导入numpy库之后,再使用“my_list = list(np.arange(0,1,0.01))”语句,即可将arange()生成的ndarray数组对象转换为列表数据。最后,使用for循环打印输出my_list中的所有元素,就得到了100个均匀浮点数,本次保留3位小数(如图3)。



  方法4:自定义函数使用yield表达式
  既然Python内置的range()函数不提供对浮点数的运算,那我们就可以自定义一个float_data()函数,三个参数依次为start、end和step,同样是对应“初始值、终值、步长”。函数中使用变量i来接收初始值,然后通过while循环(当i<end时)中的“yield i”来向外返回i的值,当然还要有变量i的步长自增语句:“i += step”。yield表达式很有趣,相关知识请搜索相关资料自行学习。
  在主程序中调用float_data()函数,接收到的数据存储至变量my_generator中,最后仍然是通过for循环来将它们打印输出,也可以得到100个均匀浮点数(如图4)。



  四种方法均能实现均匀浮点数的生成,大家可根据自己的编程习惯来使用。当然,如果想生成的是0.000、0.001、0.002……0.999这样的千分位均匀浮点数,只要在程序中将步长修改为0.001、print输出“%.3f”以及方法2中将“i/100”修改为“i/1000”即可。
其他文献
天然橡胶暂无可替代  和石油类似,天然橡胶也是人类工业文明的一大基石。天然橡胶被用来制造跑鞋、轮胎等物品。虽然人类已经可以合成橡胶,但天然橡胶具有合成橡胶所没有的理化性质,因此重要的工业物料依旧需要天然橡胶。  比如,合成橡胶无法承受飞机起飞和降落时的磨损,因此飞机轮胎的主要材料是天然橡胶。汽车轮胎的10%~30%也是天然橡胶,卡车轮胎的天然橡胶占比更高。  因为这个原因,人类对天然橡胶的需求一直
期刊
有时我们辛辛苦苦做出来的图片,一发表到互联网上就会被很多人抄袭。为了更好地保护自己的劳动成果,很多时候需要为自己的图片添加上水印。添加水印通常都是在电脑中通过Photoshop等软件来进行的,那么在手机中是否可以为图片添加水印呢?安装应用并添加图片  用户先通过手机自带的应用商店,下载安装一款名为“简单水印”的手机应用。如果应用商店里没有这款应用,那么用户也可以通过手机浏览器登录该应用的官方网站(
期刊
外观:半透明工艺+信仰LOGO灯,档次感很足  枪神5Plus在设计方面的看点是C面的右上角部分采用了半透明工艺,在该区域你可以直接看到机型的内部情况,颇有点时下流行的赛博朋克风格,看起来很炫酷。  ROG的LOGO设计在了A面——它支持RGB灯效,辨识度非常高。外壳顶盖是金属材质,加上不对称斜线和点矩阵设计,档次感十足。此外,枪神5Plus的左下角转轴是可拆卸的“信仰徽章”,而对于喜欢灯光的玩家
期刊
赛睿RIVAL 106参考价格:199元  鼠标沿用了Kana左右对称的人体工学设计,机身小巧,对手部的支撑做得很到位,长时间玩游戏手部也不累。鼠标表面为镜面设计,手感光滑,但遇到掌心出汗较多的时候还是会有些打滑的现象存在。  赛睿RIVAL 106的引擎是TrueMove1,最高采样率达到了7200CPI,性能很强悍,还支持1比1追踪,能消除鼠标在运动过程中出现的跳帧、延迟等问题,让光标与鼠标的
期刊
摘要:目的 分析乙型病毒性肝炎后肝硬化患者的心理问题,应用心理护理方法,观察对病情的影响。方法 通过对2012年10月至2013年12月来我院就诊的64例乙型病毒性肝炎后肝硬化患者的临床资料进行回顾性分析,分析患者心理问题,对不同心理状态采取相应的心理护理方法,并随访跟踪6个月,观察其病情变化。结果 所有患者经过有针对性的心理护理,消除了其心理障碍,能够积极地配合治疗,早期肝硬化治愈,中晚期肝硬化
期刊
摘要:目的:观察护理干预对脊柱外伤手术后深静脉血栓的预防效果。方法:资料随机选取我院2013年7月-2014年7月收治的脊柱外伤患者124例,随机分为两组,对照组62例予常规护理,观察组62例于对照组基础上予综合护理干预,比较两组DVT发生情况,及PT、FIB、APTT水平。结果:观察组DVT发生率显著低于对照组(P<0.05);观察组PT、FIB水平均低于对照组(P0.05),具有可比性。  1
期刊
压疮是指局部组织长期受压,血液循环障碍,局部持续缺氧、营养不良而致的软组织压力性溃疡,压疮最初称为席疮,再发展称为褥疮,现称之为压疮,又称为压力性溃疡。神经内科患者常伴有肢体活动障碍、偏瘫、大小便失禁、昏迷等多种状况,很容易发生压疮。因此卧床患者压疮的预防便成为了工作的重中之重。现将神经内科卧床患者压疮的预防措施总结如下:  1压疮的预防  1.1评估压疮发生的危险性 责任护士应对病人进行全面评估
期刊
高通的“刀法”  今年的手机芯片市场有点“混乱”,往年高通8系旗舰芯片都是上半年发一款,下半年再整一款Plus的版本主要给游戏手机用。但今年骁龙888没发布多久,紧接着就来了骁龙870,如今过了2个月,市面上的骁龙870手机越来越多,价格跨度从1999元到4999元都有,面对这一变化,估计有人是懵圈的,如果你正打算购买骁龙870手机,建议看看下面的分析。  从参数对比可以看到,骁龙870和骁龙86
期刊
文件传输是将文件从一个计算机系统传到另一个计算机系统。它能把文件传输到另一计算机中去存储,访问远程计算机上的文件,获取另一计算机上的数据进行处理,把文件传输至打印机……一般传输文件时会出现进度条,Windows10的进度条会提示进度百分比、传输速度、剩余时间等信息。网速的快慢会影响传输速度,今天我们用VB编程一个文件传输进度条,由于没有文件实际传输仅模拟传输的过程,还可以手动控制快慢。  编程前,
期刊
不少人觉得Windows自带的鼠标箭头没有美感,所以才有各种桌面风格主题。在网页中我们可以使用JS代码给鼠标装饰一下,比如一些博客网站中鼠标点击时会有一些诸如泡泡、笑脸、爱心、雪花之类的特效,不过JS比较复杂感兴趣的同学可以自行查找资料学习。今天我们用Scratch模拟动态鼠标特效。  一、在造型面板中新建一个角色。绘制一个实心蓝色圆,当然也可以绘制爱心或者其他图案,还可以给绘制的图案增加一些动态
期刊