【python】数字

【转载】转自振哥
在这里插入图片描述

数字

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

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

  1. / 返回浮点数
    即便两个整数,/ 操作也会返回浮点数
    In [1]: 8/5
    Out[1]: 1.6
    
  2. // 得到整数部分
    使用 // 快速得到两数相除的整数部分,并且返回整型,此操作符容易忽略,但确实很实用。
```

In [2]: 8//5
Out[2]: 1

In [3]: a = 8//5
In [4]: type(a)
Out[4]: int
```
  1. % 得到余数
    % 得到两数相除的余数:

    In [6]: 8%5
    Out[6]: 3
    
  2. ** 计算乘方
    ** 计算几次方

    In [7]: 2**3
    Out[7]: 8
    
  3. 交互模式下的_
    在交互模式下,上一次打印出来的表达式被赋值给变量 _

    In [8]: 2*3.02+1	
    Out[8]: 7.04
    
    In [9]: 1+_
    Out[9]: 8.04
    
  4. 十转二
    将十进制转换为二进制:

    >>> bin(10)
    '0b1010'
    
  5. 十转八
    十进制转换为八进制:

    >>> oct(9)
    '0o11'
    
  6. 十转十六
    十进制转换为十六进制:

    >>> hex(15)
    '0xf'
    
  7. 转为浮点类型
    整数或数值型字符串转换为浮点数

    >>> float(3)
    3.0
    

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

    >>> float('a')
    Traceback (most recent call last):
      File "<pyshell#7>", line 1, in <module>
        float('a')
    ValueError: could not convert string to float: 'a'
    
  8. 转为整型

    int(x, base =10)
    

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

    >>> int('12',16) # 把base进制的数转化为十进制 16进制的'12'转化为10进制是8
    18
    
  9. 商和余数
    分别取商和余数

    >>> divmod(10,3)
    (3, 1)
    
  10. 幂和余同时做
    pow 三个参数都给出,表示先幂运算再取余:

    >>> pow(3, 2, 4)
    1
    
  11. 四舍五入
    四舍五入,第二个参数代表小数点后保留几位:

    >>> round(10.045, 2)
    10.04
    >>> round(10.046, 2)
    10.05
    
  12. 计算表达式
    使用内置函数eval计算字符串型表达式的值:

    >>> s = "1 + 3 +5"
    >>> eval(s)
    9
    >>> eval('[1,3,5]*3')
    [1, 3, 5, 1, 3, 5, 1, 3, 5]
    
  13. 真假
    真假布尔值本质上也是数字,所以也归并到此节中讨论。
    以下四种情况都为假值:

    >>> bool(0)
    False
    >>> bool(False)
    False
    >>> bool(None)
    False
    >>> bool([])
    False
    

    以下这些情况为真:

    >>> bool([False]) #[False] is a list
    True
    >>> bool([0,0,0])
    True
    
  14. all 判断元素是否都为真
    所有元素都为真返回 True,否则返回False

    #有0,所以不是所有元素都为真

    >>> all([1,0,3,6])
    False	
    

    #所有元素都为真

    >>> all([1,2,3])
    True
    
  15. any 判断是否至少有一个元素为真
    至少有一个元素为真返回True,否则返回False

    # 没有一个元素为真
    >>> any([0,0,0,[]])
    False
    # 至少一个元素为真
    >>> any([0,0,1])
    True
    
  16. 链式比较
    Python 支持下面这种链式比较,非常方便:

    >>> i = 3
    >>> 1 < i < 3
    False
    >>> 1 < i <=3
    True
    
  17. 交换元素
    Python 除了支持上面的链式比较外,还支持一种更加方便的操作:直接解包赋值。

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

    a, b = 1, 3
    a, b = b, a  # 交换 a,b
    

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

    a,b = 1, 3
    a, b = b+1, a-1
    print(a,b) # 结果是多少?
    

    可能会有疑问:是 b+1 赋值给 a 后,a-1再赋值给 b ?

    如果明白了上面的原理:等号右面完成压包,左侧再解包。

    就会立即得出答案:肯定不是。

    下面这行代码:

    a, b = b+1, a-1
    等价于:
    
    c = b+1, a-1 # 压包
    a, b = c # 解包
    答案是:a=4, b=0
    

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

  18. 链式操作
    下面这个例子使用 operator 模块中 add, sub 函数,根据操作符+,-,生成对应的函数,然后直接调用。

    很像设计模式中最频繁使用的对象工厂模式。

    >>> 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
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值