Python3 CookBook | 数字处理
文章首发于知乎专栏,欢迎关注。
zhuanlan.zhihu.com/pythoncookb…
以下测试代码全部基于 Python3。
数字处理一般来说都比较简单,这篇文章主要介绍几个常见问题和常用函数。
取整和四舍五入
使用 int() 函数取整会直接丢弃小数位,不进行四舍五入。
In [4]: int(1.63)
Out[4]: 1复制代码
round() 函数会根据所带参数确定保留的小数位数,然后输出四舍五入后的结果。
In [6]: round(1.63)
Out[6]: 2In [7]: round(1.63, 1)
Out[7]: 1.6复制代码
精确的浮点数运算
浮点数计算最让我头疼的就是它的小误差,这种误差并不是每一次都会出现,有的时候想在页面上展示一个计算结果,突然发现这个结果变成了一大长串数字,然后还要修改代码,将这串数字格式化。
In [8]: a = 1.1In [9]: b = 1.2In [10]: a + b
Out[10]: 2.3In [11]: a = 4.2In [12]: b = 2.1In [13]: a + b
Out[13]: 6.300000000000001复制代码
如果想要避免这种情况可以使用 Decimal() 来进行精确计算,但这样的问题是会有一些性能上的损耗。
In [14]: from decimal import DecimalIn [15]: a = Decimal(2.1)In [16]: b = Decimal(4.2)In [17]: a + b
Out[17]: Decimal('6.300000000000000266453525910')In [18]: a = Decimal('2.1')In [19]: b = Decimal('4.2')In [20]: a + b
Out[20]: Decimal('6.3')复制代码
需要注意的是,传入的参数需要是字符串,有点奇怪。
随机数
用 random 来生成随机数,该模块还提供了很多 function,特别有用。
产生[0,1)之间的随机数。
random.random()
产生[min, max)之间的随机整数。 random.randint(min, max)
从可迭代对象中随机选取一个元素返回。
random.choice(iterable)
从可迭代对象中随机选取不重复的 k 个元素,以数组的形式进行返回。
random.sample(iterable, k)
在[start, stop)中以步长 step 进行步进,随机产生一个元素。
random.randrange(start, stop, step)
对序列进行原地随机打乱顺序,返回 None,一定要注意这是原地起作用的。
random.shuffle(l)
这里就不做具体演示了。
关于数字还有很多其他操作,比如格式化输出,二八十六进制整数的转换,复数运算等等,但都不是很复杂,有的可能也不常遇到。
未完待续。。。
Python3 CookBook | 数字处理相关推荐
- python3 cookbook中常遇问题的解答记录
常遇问题与解答 数据结构与算法 将序列分解为单独的变量 解压可迭代对象赋值给多个变量 查找最大或最小的 N 个元素 字典的运算 查找两字典的相同点 序列中出现次数最多的元素 通过某个字段将记录分组 过 ...
- python if后面要不要加括号_Python装饰器兼容加括号与不加括号的写法
使用Django的时候,我发现一个很神奇的装饰器:@login_required, 这是控制一个view的权限的,比如一个视图必须登录才可以访问,可以这样用: 1 2 3 4 @login_requi ...
- python后端开发学什么_零基础学Python,这是阿里Python8年开发经验写给你的学习路线图...
今天给大家分享一位前辈整理的一个Python web学习路线.这位前辈由于有编程基础,所以采用了自学Python的方式.学完后主要做后端开发.希望对你有所启发. 整理的一个 python web 学习 ...
- 免费的编程中文书籍索引(2018第三版)
之前我在 github 上整理了来一份:free-programming-books-zh_CN(免费的计算机编程类中文书籍). 截至目前为止,已经在 GitHub 收获了 40000 多的 star ...
- 看云电子书归档 2016.4
(译) JSON-RPC 2.0 规范(中文版) Gitee 下载 Github 下载 SourceForge 下载 00后:移动互联网崛起新势力 Gitee 下载 Github 下载 SourceF ...
- 编写高效且优雅的 Python 代码
Python 作为一门入门极易并容易上瘾的语音,相信已经成为了很多人 "写着玩" 的标配脚本语言.但很多教材并没有教授 Python 的进阶和优化.本文作为进阶系列的文章,从基础的 ...
- 零基础自学python-零基础如何自学python?
零基础如何自学python?今天传智播客给大家分享一篇关于零基础学习python的路线,当然了也十分推荐想学习想就业python方向的同学来传智播客学习培训python python入门基础 编程语言 ...
- python学习路线--从入门到入土
入门技术博客 进阶自己挑选 入门基础 Python入门相对容易又可以干很多事(网站,运维,数据,爬虫等),是一门方便的工具语言.2016年TIOBE排名显示Python已经名列第四,成为脚本语言之首. ...
- Python中的warnings模块详细阐述
Python中的warnings模块详细阐述 异常和警告 warnings - 非致命提醒 警告类别 警告过滤器 默认警告过滤器 可用函数 生成警告 使用模式过滤 重复警告 其他消息传递函数 由于在读 ...
最新文章
- 为什么我们需要开源的系统芯片?
- 2014年:这些词都快被玩坏了
- [Hive_add_8] Hive 常用参数配置
- 进程间通信 —— 命名管道
- python用辗转相除法求最大公约数
- 【转】Javascript面向对象编程(二):构造函数的继承
- LeetCode 684. Redundant Connection
- JavaSE——Java介绍与环境变量简述
- 作为职场小白,除了要注意自身的言谈举止
- rsync 同步文件
- 系统无忧 Ghost XP SP3 快速装机版V2011.07
- 什么是EDM营销?EDM营销的优点是什么?
- 手写一个java爬虫,获取网页信息。
- New Year Snowmen((贪心)map+优先队列)
- iOS/iPhone 微信打开doc xls文件报错OfficeImportErrorDomain错误912 打不开文档
- 计算机网络dna,DNA计算
- 获取微信公众号历史文章列表页链接
- 简述人工神经网络的定义,简述神经网络算法
- NC 前端修改数据库的方法
- Android进阶知识(二十五):Bitmap简介及其高效加载
热门文章
- sqlyog设置自动补全_sqlyog智能提示如何设置?sqlyog智能提示设置流程介绍
- python debug工具_常用的 Python 调试工具,Python开发必读-乾颐堂
- python log函数_python要点-装饰器
- win10添加美式键盘_win10玩dnf卡顿,怎么解决?
- unicode_literals导致的UnicodeEncodeError
- html一级二级菜单,纯JS添加一级二级菜单的代码
- 用Python发送邮件
- android sqlite 类使用,Android SQLite编程详解(不使用SQLiteOpenHelper类)
- 转载-致IT同仁 —— IT人士常犯的17个职场错误
- PHP中文乱码的常见解决方法总结