Number数字类型


3 Number数字类型

3.1 运算符

Python支持多种运算符,下表大致按照优先级从高到低的顺序列出了所有的运算符。(取自博客《Python100天》https://github.com/jackfrued/Python-100-Days/blob/master/Day01-15/Day02/%E8%AF%AD%E8%A8%80%E5%85%83%E7%B4%A0.md

 说明:在实际开发中,如果搞不清楚优先级可以使用括号来确保运算的执行顺序。

  +运算符除了用于算术加法,还可以用于列表、元组和字符串的合并或链接,生成新的对象。

1 >>> 3 + (3 + 4j)  # 整数与复数相加
2 (6+4j)
3 >>> [1, 2, 3] + [4, 5, 6]  # 连接两个列表
4 [1, 2, 3, 4, 5, 6]
5 >>> (1, 2, 3) + (4,)  # 连接两个元组,4后面的逗号可不能丢,那是 元组的标志
6 (1, 2, 3, 4)
7 >>> """abc""" + '''123'''  # 连接两个字符串(这里使用三个对单引 号和三对双引号表示)
8 'abc123'

  - 运算符除了算术减法,还可以表示集合差集。

 1 >>> {1, 2, 3, 4, 5} - {3}  # 差集
 2 {1, 2, 4, 5}
 3 >>> """其他集合运算"""
 4 '其他集合运算'
 5 >>> {1, 2, 3, 4, 5} | {6}  # 并集
 6 {1, 2, 3, 4, 5, 6}
 7 >>> {1, 2, 3, 4, 5} & {3}  # 交集
 8 {3}
 9 >>> {1, 2, 3, 4, 5, 6} ^ {5, 6, 7, 8}  # 对称差集,也就是数学中交集的补集
10 {1, 2, 3, 4, 7, 8}

  *运算符除了算术乘法,还可以用于序列与整数的乘法,表示序列元素的重复,生成新的序列对象。

 1 >>> [1, 2, 3] * 3
 2 [1, 2, 3, 1, 2, 3, 1, 2, 3]
 3 >>> (1, 2, 3) * 3
 4 (1, 2, 3, 1, 2, 3, 1, 2, 3)
 5 >>> 'abc' * 3
 6 'abcabcabc'
 7 >>> '''由于Python列表中存储的是地址而不是元素值,当包含子列表的 列表进行元素重复的时候,情况会复杂一些,例如:'''
 8 >>> x = [[1]] * 3
 9 >>> x
10 [[1], [1], [1]]
11 >>> id(x[0]) == id(x[1]) == id(x[2])
12 True
13 >>> x[0].append(3)
14 >>> x
15 [[1, 3], [1, 3], [1, 3]]
16 >>> id(x[0]) == id(x[1]) == id(x[2])
17 True

  %运算符可以用于整数或实数的求余数,还可以用于字符串格式化。

  •  %操作符
1 >>> 7 % 3
2 1
3 >>> '%c, %d, %s' % (65, 65, '花儿') # %f 表示为浮点数默认保留小数点后面6位有效数字;
# %e 表示浮点数字(科学计数法)如print("%e" % 20000) 结果为:2.000000e+04
# %% 表示输出一个%;%c 表示字符及其ASCII码; %d 表示有符号十进制整数(u表示无符号); %o 表示无符号八进制; %x表示无符号十六进制(X表示大写)
# %p 表示指针(打印值的内存地址);%n 存储输出字符的数量放进参数列表的下一个变量中
4 'A, 65, 花儿'

  提示相对于%格式方法,format格式化有很多优点,也是官方推荐的使用方式,%方式将会被慢慢淘汰。

  位运算符只能用于整数,内部执行过程是:首先将整数转换为二进制数。然后右对齐,必要的时候左侧补0,按位进行运算,最后再把计算结果转换为十进制数字返回。

>>> 3 << 2  # 把3左移2位,二进制0011-->左移2位-->1100
12
>>> 3 & 7  # 表示位与运算 0011 & 0111 -->0011
3
>>> 3 | 8  # 位或运算 0011 | 1000 --> 1011
11
>>> 4 | 6  # 0100 | 0110-->0110
6
>>> 3 ^ 5  # 位异或运算 0011 ^ 0101 -->0110 对应位的数相同取0,互异取1
6
>>> 5 ^ 8  # 0101 ^ 1000 -->1101
13

拓展:Python 3.5增加了一个新的矩阵相乘运算符@。

3.2 整数类型

- Python3 支持 int、float、bool、complex(复数) - 在Python 3里,只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。

- 各进制转化为10进制

  • 方法一:
    • 二进制0b(或0B)开头 age = 0b1010 #结果:10
    • 八进制0o(或0O)开头age = 0o7070 #结果:3640 = 7 * 8^3 + 7 * 8^1
    • 十六进制0x(或0X)开头age = 0xf0f0 #结果:61680 = 15 * 16^3 + 15 * 16^1
    • 十进制 age = 28
  • 方法二:
    • num = "b" # 十六进制
    • v = int(num, base = 16) # base = 相应的数据类型
    • print(v)
    • 结果:11

- 相关函数

  • pow(x, y)函数:计算xy,想算多大算多大
    • 例:

      >>> pow(2,5)
      32

- 其他数字类型

浮点数类型

    • 带有小数点及小数的数字
    • 浮点数取值范围和小数精度都存在限制,但常规计算可忽略
    • 取值范围数量级约为-10307至10308,精度数量级10-16
    • 浮点数之间的运算存在不确定尾数,可用round()函数进行辅助。round(x, d):对x四舍五入,d是小数截取位数
    • 浮点数可以采用科学计数法表示(4.3e-3==0.0043==4.3*10-3

复数complex

    • 由实部和虚部构成 nu = 2 + 3i
    • nu.real获得实部(2)
    • nu.imag获得虚部(3)

逻辑运算

    • 布尔值True(1) /False(0)(注意首字母要大写)
    • 布尔值可以跟数字直接操作 age = 18 + True 结果:19

常用数值函数

    • abs(x), divmod(x, y), pow(x, y[,z]), round(x[,d]), max(x1,x2, ...,xn),min(x1,x2, ...,xn), int(x), float(x), complex(x)
优质内容筛选与推荐>>
1、MAVEN最佳实践:模块划分
2、Nginx学习笔记(九) 配置文件详细说明
3、20111121
4、NOI 2001 食物链
5、C++中const用法总结


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn