前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数字 20 例

数字 20 例

作者头像
double
发布2020-06-28 16:09:26
1.3K0
发布2020-06-28 16:09:26
举报
文章被收录于专栏:算法channel算法channel

接下来我会严格按照 我的施工计划,往下推进这个开源项目( 目前 4300+ star ),链接为:

https://github.com/jackzhenguo/python-small-examples

作为开篇,再简要总结下Python语言:

Python语言1989年由 Guido van Rossum 编写,Python可以应用在众多的领域中:数据分析、组建集成、网络服务、图像处理、数值计算和科学计算等领域。

Python应用的知名公司有:Youtube、Dropbox、BT、知乎、豆瓣、谷歌、百度、腾讯、汽车之家等。

Python可以做的工作有:自动化运维、测试、机器学习、深度学习、数据分析、爬虫、Web等

我们通常使用C语言实现的编译器,使用最为广泛, CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚拟机上。

施工从谈论数字开始

  • 整数
    • Python2 有取值范围,溢出后自动转为长整型
    • Python3 中为长整型,无位数限制 理论上内存有多大,位数可能就有多大
  • 长整数
    • Python2 中单独对应 Long 类型
    • Python3 中不再有Long ,直接对应 int
  • 浮点数
    • 带小数的数字
    • 如果不带数字,可能有 e 和 E
  • 复数
    • 高数中复数
    • 结构为:1+2j

数字

下面是常用的数字相关的操作:

1 / 返回浮点数

即便两个整数,/ 操作也会返回浮点数

代码语言:javascript
复制
In [1]: 8/5
Out[1]: 1.6
2 // 得到整数部分

使用 //快速得到两数相除的整数部分,并且返回整型,此操作符容易忽略,但确实很实用。

代码语言:javascript
复制
In [2]: 8//5
Out[2]: 1

In [3]: a = 8//5
In [4]: type(a)
Out[4]: int
3 % 得到余数

%得到两数相除的余数:

代码语言:javascript
复制
In [6]: 8%5
Out[6]: 3
4 ** 计算乘方

** 计算几次方

代码语言:javascript
复制
In [7]: 2**3
Out[7]: 8
5 交互模式下的_

在交互模式下,上一次打印出来的表达式被赋值给变量 _

代码语言:javascript
复制
In [8]: 2*3.02+1
Out[8]: 7.04

In [9]: 1+_
Out[9]: 8.04
6 十转二

将十进制转换为二进制:

代码语言:javascript
复制
>>> bin(10)
'0b1010'
7 十转八

十进制转换为八进制:

代码语言:javascript
复制
>>> oct(9)
'0o11'
8 十转十六

十进制转换为十六进制:

代码语言:javascript
复制
>>> hex(15)
'0xf'
9 转为浮点类型

整数或数值型字符串转换为浮点数

代码语言:javascript
复制
>>> float(3)
3.0

如果不能转化为浮点数,则会报ValueError:

代码语言:javascript
复制
>>> float('a')
Traceback (most recent call last):
  File "<pyshell#7>", line 1, in <module>
    float('a')
ValueError: could not convert string to float: 'a'
10 转为整型

int(x, base =10)

x 可能为字符串或数值,将 x 转换为整数。

如果参数是字符串,那么它可能包含符号和小数点。如果超出普通整数的表示范围,一个长整数被返回。

代码语言:javascript
复制
>>> int('12',16)
18
11 商和余数

分别取商和余数

代码语言:javascript
复制
>>> divmod(10,3)
(3, 1)
12 幂和余同时做

pow 三个参数都给出表示先幂运算再取余:

代码语言:javascript
复制
>>> pow(3, 2, 4)
1
13 四舍五入

四舍五入,第二个参数代表小数点后保留几位:

代码语言:javascript
复制
>>> round(10.045, 2)
10.04
>>> round(10.046, 2)
10.05
14 计算表达式

计算字符串型表达式的值

代码语言:javascript
复制
>>> s = "1 + 3 +5"
>>> eval(s)
9
>>> eval('[1,3,5]*3')
[1, 3, 5, 1, 3, 5, 1, 3, 5]

真假布尔值本质上也是用数字表示,所以也归并到数字这个讨论小节中。

15 真假

以下四种情况都为假:

代码语言:javascript
复制
>>> bool(0)
False
>>> bool(False)
False
>>> bool(None)
False
>>> bool([])
False

以下这些情况为真:

代码语言:javascript
复制
>>> bool([False])
True
>>> bool([0,0,0])
True
16 all 判断元素是否都为真

所有元素都为真返回 True,否则返回False

代码语言:javascript
复制
#有0,所以不是所有元素都为真
>>> all([1,0,3,6])
False
代码语言:javascript
复制
#所有元素都为真
>>> all([1,2,3])
True
17 any 判断是否至少有一个元素为真

至少有一个元素为真返回True,否则返回False

代码语言:javascript
复制
# 没有一个元素为真
>>> any([0,0,0,[]])
False
代码语言:javascript
复制
# 至少一个元素为真
>>> any([0,0,1])
True
18 链式比较

Python 支持下面这种链式比较,非常方便:

代码语言:javascript
复制
>>> i = 3
>>> 1 < i < 3
False
>>> 1 < i <=3
True
19 交换元素

Python 除了支持上面的链式比较外,还支持一种更加方便的操作:直接解包赋值。

如下所示,1,3 解包后分别赋值给a, b ,利用此原理一行代码实现两个数字的直接交换。

代码语言:javascript
复制
a, b = 1, 3
a, b = b, a  # 交换a,b

如果明白此原理,下面的赋值就会迎刃而解:

代码语言:javascript
复制
a,b = 1, 3
a, b = b+1, a-1
print(a,b) # 结果是多少?

有的朋友会有疑问:是 b+1 赋值给 a 后,a-1再赋值给 b ?

如果明白了上面的原理:等号右面完成压包,左侧再解包,就会立即得出答案:肯定不是。

下面这行代码:

代码语言:javascript
复制
a, b = b+1, a-1

等价于:

代码语言:javascript
复制
c = b+1, a-1 # 压包
a, b = c # 解包

答案是:a=4, b=0

压包和解包还有更加复杂的用法,放到后面进阶部分总结。

20 链式操作

下面这个例子使用 operator 模块中 add, sub 函数,根据操作符+,-,生成对应的函数,然后直接调用。有种设计模式中最频繁使用的对象工厂模式的意思。

代码语言:javascript
复制
>>> from operator import (add, sub)
>>> def add_or_sub(a, b, oper):
 return (add if oper == '+' else sub)(a, b)
>>> add_or_sub(1, 2, '-')
-1

以上就是数字这一小节的总结。

按照我的施工计划,数字小节施工完成,获得一枚红旗。

如果你喜欢这个开源项目,欢迎点击在看支持我一下,这对我持续向前保持动力来说很重要。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员郭震zhenguo 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 / 返回浮点数
  • 2 // 得到整数部分
  • 3 % 得到余数
  • 4 ** 计算乘方
  • 5 交互模式下的_
  • 6 十转二
  • 7 十转八
  • 8 十转十六
  • 9 转为浮点类型
  • 10 转为整型
  • 11 商和余数
  • 12 幂和余同时做
  • 13 四舍五入
  • 14 计算表达式
  • 15 真假
  • 16 all 判断元素是否都为真
  • 17 any 判断是否至少有一个元素为真
  • 18 链式比较
  • 19 交换元素
  • 20 链式操作
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档