Python基础与拾遗1:Python中的数字
Python基础与拾遗1:Python中的数字
- 写在前面
- 数字常量
- 表达式操作符
- 变量
- 除法
- 复数
- 二进制,八进制与十六进制
- 常用内置数学工具
- 小数与分数
- 集合
- 布尔
写在前面
转瞬之间,笔者已经有一年没有更新博客了。从硕士研究生毕业进入工作岗位后,也经历了一年半左右的时间。2019-2020是不平凡的两年,国际形势风云突变,时代的尘埃落在每个人的头顶上都是一座大山。在工业界中繁忙的工作之余,笔者也深切感受到基础的重要性。因此,从2021年开始,笔者决定多放送一些基础相关的干货。在计算机视觉领域中,Python语言是必不可少的数据处理,可视化,人工智能相关任务中所使用的工具,笔者打算从Python语言开始,为大家带来总结的干货与应用经验。
在博客写作中,笔者的风格是,偏重拾遗,而不过分重复互联网上现有的资源。个人才疏学浅,欢迎大家进行探讨与补充。
在笔者学习Python基础的过程中,主要使用到以下两类资源:
书籍资源。笔者主要参考机械工业出版社的《Python学习手册》第4版,Mark Luts著,李军 刘红伟等译。个人认为知识点覆盖比较细节,可以当成字典进行查阅或工作之余查缺补漏。本博客也主要借鉴书籍中的内容。
网络资源。读研时笔者通常会从菜鸟教程上学习Python相关基础,简洁明了,推荐大家借鉴。
由于现有主流使用的是Python3.x,视觉领域中也有部分框架使用的是Python2.x,比如Caffe 1.0。因此,在笔者的博客中,主要重点在Python 3.x的总结与拾遗,会捎带Python 2.x的用法。
废话不多说,下面开始干货,第一讲:Python中的数字。
数字常量
Python中常用的数字常量列表如下:
数字 | 常量 |
---|---|
1234, -24, 0, 99999999999999 | 整数(无穷大小) |
1.23, 1., 3.14e-10, 4E210, 4.0e+210 | 浮点数 |
0177, 0x9ff, 0b10101010 | Python 2.6后的八进制,十六进制和二进制常量 |
0o(O)177, 0x(X)9ff, 0b(B)10101010 | Python3.0后的八进制,十六进制和二进制常量 |
3+4j, 3.0+4.0j, 3J, complex(3, 4) | 复数常量 |
- 整数就是十进制字符串,浮点数带“.”或者在整数与小数后面加上e或者E再跟上数字。
- 在超过32位时,Python 2.6及之后版本会自动给末未加上L或者l,为长整数。Python 3.0及之后版本则不会。
- 二进制,八进制,十六进制使用前缀。在Python 2.6及之后版本中,八进制可以仅以0开头,Python 3.0中不行。
表达式操作符
优先级由高到底列表如下:
操作符 | 描述 |
---|---|
yield x | 生成器函数发送协议 |
lambda args: expression | 生成匿名函数 |
x if y else z | 三元选择表达式 |
x or y | 逻辑或(x为假才会计算y) |
x and y | 逻辑与(x为真才会计算y) |
not x | 逻辑非 |
x in y, x not in y | 成员关系(可迭代对象,集合等) |
x is y, x is not y | 对象实体测试 |
x < y, x <= y, x > y, x >= y, x == y, x != y | 大小比较,集合子集和超集值相等性操作符 |
x | y | 按位或,集合并集 |
x ^ y | 按位异或,集合对称差 |
x & y | 按位与,集合交集 |
x << y, x >> y | 左移或右移y位 |
x + y, x - y | 加法/合并,减法,集合差集 |
x * y, x % y, x / y, x // y | 乘法/重复,余数/格式化,除法真除法,除法floor除法 |
-x, +x | 一元减法,识别 |
~x | 按位求补(取反) |
x ** y | 幂运算 |
x[i] | 索引(序列,映射或其他)点号区属性运算,函数调用 |
x[i:j:k] | 分片 |
x(…) | 调用(函数,方法,类及其他可调用的) |
x.attr | 属性引用 |
(…) | 元组,表达式,生成器表达式 |
{…} | 字典,集合,集合和字典解析 |
- Python 2.6及之后的版本中,值不相等除了!=,可以用<>,Python 3.0及之后的版本中不行。
- Python 2.6及之后的版本中,后引号表达式’X’与repr(X)作用相同,Python 3.0及之后的版本中移除,使用repr与str。
- Python 2.6及之后的版本中,除法/表示截断除法,Python 3.0及之后的版本中表示真正的除法。
- 括号会改变优先级。
- 当两个混合类型相加时,会自动升级到复杂的数据类型,比如整数加浮点数。
- 连续比较,比分开单个比较更快,比如以下第一行速度快于第二行。连续比较允许任意长度。
X < Y < Z
X < Y and Y < Z
变量
- 变量在他第一次赋值时创建。
- 变量在表达式中使用将被替换为它们的值。
- 变量在表达式中使用以前必须被赋值。
- 变量像对象一样不需要在最开始就声明(注意与C,C++等语言的区别)。
除法
- X / Y。在 Python 2.6及之后的版本中如果都是整数,就执行Floor除法,否则执行真除法;在Python3.0中执行真除法。
- X // Y。在所有Python版本中都执行Floor除法。
- //执行Floor除法总是向下取整。5 // -2,结果为-3。
- 要在 Python 2.6及之后的版本中使得/做真除法。
# Python 2.6及之后的版本
# 真除法
X = 5
Y = 2
X / float(Y) # 2.5# 或者
from __future__ import division
X = 5
Y = 2
X / Y # 2.5
复数
- 复数的运算结果也是复数
二进制,八进制与十六进制
- 十进制与其他三种进制之间的转化,使用oct, hex和bin函数。
oct(64) # 八进制
hex(64) # 十六进制
bin(64) # 二进制
- 其他三种进制转化成十进制,使用int函数。
int('100', 8) # 八进制100转10进制
int('100', 16) # 十六进制100转10进制
int('100', 2) # 二进制100转10进制
常用内置数学工具
- math库。
import math
math.pi, math.e
math.sin(2 * math.pi / 180)
math.sqrt(144)
math.sqrt(2)
math.floor(-2.5)
math.trunc(-2.5)
- 次方运算。
pow(2, 4)
2 ** 4
- 绝对值与求和运算。
abs(-42.0)
sum((1, 2, 3, 4))
- 求最小与最大值运算。
min(3, 1, 4, 2)
max(3, 1, 2, 4)
- 取整运算(也可用来进制转换)。
int(2.5)
- 四舍五入运算。
round(2.5)
round(2.56789, 2)
- 随机值运算。
import random
random.random() # 随机生成[0, 1)范围内的数
random.randint(1, 10) # 在参数范围[1,10]内随机生成整数,注意能取到上界
random.choice([1, 2, 3, 4, 5, 6]) # 在列表中随机取值
小数与分数
- 小数问题由来。
0.1+0.1+0.1-0.3 # 结果是否为0.?
5.551115123125783e-17 # 真实结果
原因主要是因为计算机中对数字的存储格式决定的,详见知乎专栏《为什么0.1+0.2不等于0.3?原来编程语言是这么算的……》1,因此引入了小数模块
from decimal import Decimal
Decimal('0.1')+Decimal('0.1')+Decimal('0.1')-Decimal('0.3') # 输出Decimal('0.0')
- 小数的全局精度。
decimal.getcontext().prec = 4 # 小数点后最多四位数
- 分数。
from fractions import Fraction
Fraction(4, 6) # Fraction(2, 3)
Fraction(0.25) # Fraction(1, 4)
- 分数和小数,都可以通过字符串创建。
Decimal('0.1')
Fraction('0.25')
集合
- 在Python 2.6及之后的版本中,用set关键字构造集合。
x = set('abcde')
y = set('bdxyz')
在Python 3.0及之后的版本中,也可以直接花括号构造集合,并支持集合解析。
x = {1, 2, 3, 4}
{x ** 2 for x in [1, 2, 3, 4]}
- 多种运算符。
x = set('abcde')
y = set('bdxyz')
'e' in x # True
x - y # set(['a', 'c', 'e'])
x | y, z = x.update(y) # set(['a', 'c', 'b', 'e', 'd', 'y', 'x', 'z'])
x & y, z = x.intersection(y) # set(['b', 'd'])
x ^ y # set(['a', 'c', 'e', 'y', 'x', 'z'])
x > y, x < y # False False
z.add('m') # set(['a', 'c', 'b', 'e', 'd', 'y', 'x', 'z', 'm'])
x.remove('a') # set(['b', 'e', 'd', 'c'])
S = set([1, 2, 3])
S.issubset(range(-5, 5)) # True
- 运算符的限制
{1, 2, 3} | [3, 4] # TypeError: unsupported operand type(s) for |: 'set' and 'list'
{1, 2, 3}.union([3, 4]) # {1, 2, 3, 4}
- 集合中只能包含不可变的元素,可变的元素不允许,比如列表,字典等。
- 普通的集合不能嵌入到其他集合中,frozenset这种冻结集合可以。
布尔
- bool类型数据,其值为True或者False。
- True和False看作是预定义的设置为整数1和0的变量。
type(True) # <class 'bool'>
isinstance(True, int) # True
True == 1 # True
True is 1 # False
True or False # True
True + 4 # 5
以上,欢迎各位读者朋友提出意见或建议。
欢迎阅读笔者后续博客,各位读者朋友的支持与鼓励是我最大的动力!
written by jiong
咬定青山不放松,脚踏实地加油干!
https://zhuanlan.zhihu.com/p/87672024. ↩︎
Python基础与拾遗1:Python中的数字相关推荐
- Python基础与拾遗9:Python中的函数与作用域
Python基础与拾遗9:Python中的函数与作用域 函数的作用 函数的设计理念 Python中的函数 Python中的函数关键字 Python中的多态 Python中函数的参数传递 Python中 ...
- Python基础与拾遗2:Python中的字符串与字符串格式化
Python基础与拾遗2:Python中的字符串与字符串格式化 常见的字符串常量与表达式 字符串转义 索引和分片 原处修改字符串 字符串格式化 格式化表达式 格式化调用方法 添加具体格式化 本篇博文, ...
- Python基础知识点拾遗---文件IO(os、filecmp、shutil库)、sys库、序列化(pickle)、类
Python基础知识点拾遗 文件IO 文本 目录 os 获取文件的创建.修改及最近访问时间 获取当前文件的大小 获取当前的登录用户名称 获取当前的cpu核数 调用操作系统底层的random生成器 sh ...
- python菜鸟基础教程-python基础菜鸟教程,Python的基础语法
原标题:python基础菜鸟教程,Python的基础语法 什么是Python?Python是一门简单直观的编程语言,并且目前是开源的,可以方便任何人使用. Python的开发哲学:用一种方法,最好是只 ...
- Python基础班---第一部分(基础)---Python基础知识---第一个Python程序
01. 第一个 HelloPython 程序 1.1 Python 源程序的基本概念 Python 源程序就是一个特殊格式的文本文件,可以使用任意文本编辑软件做 Python 的开发 Python 程 ...
- 什么是python基础教程-最好的Python入门教程是?
Python教程领到手,学习不用愁!领! 作为一门编程语言,Python是属于入门比较简单的.所以身边不少人都选择了自学Python,而且网上相关资料也有很多,知识兔分享大量的Python教学课程,基 ...
- python基础教程菜鸟教程-python基础菜鸟教程,Python的基础语法
原标题:python基础菜鸟教程,Python的基础语法 什么是Python?Python是一门简单直观的编程语言,并且目前是开源的,可以方便任何人使用. Python的开发哲学:用一种方法,最好是只 ...
- python基础教程是什么-python基础教程都有什么?
分享一下传智播客的python基础教程 第一阶段 Python核心编程 可掌握的核心能力 1.掌握Python基础语法,具备基础的编程能力; 2.建立起编程思维以及面向对象程序设计思想.解决的现实问题 ...
- Python基础教程:用Python怎么telnet到网络设备
Python基础教程:用Python怎么telnet到网络设备 0.前言 Telnet协议属于TCP/IP协议族里的一种,对于我们这些网络攻城狮来说,再熟悉不过了,常用于远程登陆到网络设备进行操作,但 ...
最新文章
- HANA report里默认filter的工作机制
- c malloc 头文件_干货笔记 | C/C++笔试面试详细总结(二)
- [剑指offer][JAVA]面试题第[15]题[二进制中1的个数][位运算]
- java http请求实现_JAVA实现HTTP请求方式
- python requirements.txt_python_requirements.txt使用
- SQLServer使用表值参数,高性能批量插入数据
- eclipse项目如何变成web项目_Eclipse中将Java项目转换成Web项目的方法
- 博客园五月纪念日——去你的写博无用论
- Atitit 视频编码与动画原理attilax总结
- CorelDRAWX8安装包下载 全新矢量图形编辑设计工具
- 射频放大电路的优化及ADS仿真
- 服务器装win10系统,win10服务器系统
- 计算几何常用的函数/方法
- vscode远程连接与控制使用
- 安卓学习 Day26:使用自定义视图绘制文本、图像与图形
- Android九环刀之RatingBar之评委请亮分
- h5微信f分享链接给对方获取对方手机号_企业微信可以搜索微信号添加好友/客户吗?怎样主动添加通过率高?...
- 免费体验,快速对接身份证实名认证API接口说明
- C程序设计-方法与实践(清华大学出版社)习题解析
- Shell编程学习(四)read读取、函数、文件归档、定时任务
热门文章
- linux socket错误提示errno分析
- 狼人杀游戏(单人联机)(C++)
- python多线程结束线程_Python多线程和Office第2部分
- 解决页面间体验问题的纯前端容器Lath
- 腾讯云部署Flask应用
- 关于jmeter中编写shell脚本json的应用
- FineReport——登录不到决策系统
- 关于2021年11月28日PMI认证考试的报名通知
- ERROR 2002 HY000 Can't connect to local MySQL server thro
- python 拼音识别_python识别一段由字母组成的字符串是否是拼音