Python3 From Zero——{最初的意识:003~数字、日期、时间}
一、对数值进行取整:round(value,ndigits)
>>> round(15.5,-1) #可以取负数
20.0
>>> round(15.5,0) #当某个值恰好等于两个整数间的一半时,取整操作会取到离该值最近的那个偶数上
16.0
>>> round(16.5,0) #如上同例
16.0
#float提供17位的精度
二、对小数进行精确计算:decimal模块(规避float天生的精度误差,但效率低,常用于金融领域)
>>> a = 1.1
>>> b = 2.2
>>> a + b
3.3000000000000003
>>> (a + b) == 3.3
False >>> from decimal import Decimal
>>> a = Decimal('1.1')
>>> b = Decimal('2.2')
>>> a + b
Decimal('3.3')
>>> print(a + b)
3.3
>>> print(float(a + b))
3.3
三、format()格式化输出:{「参数索引或名称」:「填充符」「对齐方式<>^」「width」「数值千分位,」「精度.ndigits」}.format("a", "b", ...)
>>> print("{0:=^20,.1f}, {1:+>20}".format(1000.235, 'haha'))
======1,000.2=======, ++++++++++++++++haha
>>> print("{b:=^20,.1f}, {a:+>20}".format(b=1000.235, a='haha'))
======1,000.2=======, ++++++++++++++++haha
'!a' (应用 ascii()),'!s' (应用 str() )和 '!r' (应用 repr() )可以在格式化之前转换值
>>> print('{!a}'.format('1.001'))
'1.001'
>>> print('{!r}'.format('1.001'))
'1.001'
>>> print('{!s}'.format('1.001'))
1.001
传入一个字典,用中括号( '[]' )访问它的键:
>>> table = {'a': 10,'b': 20}
>>> print('a is {1},b is {0}'.format(*table.values()))
a is 10,b is 20
>>> print('a is {0[a]},b is {0[b]}'.format(table))
a is 10,b is 20
>>> print('a is {a},b is {b}'.format(**table))
a is 10,b is 20
四、进制转换
>>> x = -1234
>>> bin(x) #十进制转二进制
'-0b10011010010'
>>> oct(x) #十进制转八进制
'-0o2322'
>>> hex(x) #十进制转十六进制
'-0x4d2'
>>> int(-0x4d2) #十六进制转十进制
-1234
五、Python中大部分和数学相关的模块都适用于复数,但Python的标准数学函数默认不能产生数值,若需要产生复数结果,须使用cmath模块
>>> import math
>>> math.sqrt(-1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: math domain error
>>> import cmath
>>> cmath.sqrt(-1)
1j
六、正负无穷大(inf、-inf)、NaN(not a number,如两个无穷大之间的运算结果)
>>> a = float('inf')
>>> a
inf
>>> b = -a
>>> b
-inf
>>> b / 2
-inf
>>> 2 / b
-0.0
>>> a + b
nan
>>> a * b
-inf
注1:运算结果根据使用环境判断,inf、-inf具备传染性
注2:nan会通过所有的操作进行传播,且不会引发任何异常
注3:对两个nan进行逻辑比较的结果是False,唯一安全检测nan的方法是math.isnan()
七、处理分数:fractions模块
#允许用户以分数的形式输入,免去了用户手动将数据转换为float或Decimal对象的麻烦,提升用户体验
from fractions import Fraction
>>> a = Fraction(2, 3)
>>> b = Fraction(4, 5)
>>> a
Fraction(2, 3)
>>> b
Fraction(4, 5)
>>> a < b
True
>>> a + b
Fraction(22, 15)
>>> a * b
>>> float(a) #分数转化为浮点数
0.6666666666666666
>>> a.numerator #取分子
2
>>> a.denominator #取分母
3
八、大型数组计算:NumPy模块
#NumPy为Python提供了数组对象,比标准Python中的列表有着更好的性能表现,更加适用于数学计算,底层实现上,NumPy采用和C相同的内存分配方式,即大块的连续内存,其效率通常比math模块中的函数快100倍左右
NumPy中的数组在进行标量运算时是针对逐个元素进行计算的:
>>> import numpy as np #惯例写为np
>>> ax = np.array([1, 2, 3, 4])
>>> ay = np.array([10, 12, 13, 14])
>>> ax * 2
array([2, 4, 6, 8])
>>> ax / 2
array([ 0.5, 1. , 1.5, 2. ])
>>> ax * ay
array([10, 24, 39, 56])
>>> ax - ay
array([ -9, -10, -10, -10])
NumPy中提供了一些“通用函数”集合,可用于math模块中对应函数的替代:
>>> math.sqrt(4)
2.0
>>> np.sqrt(4) #效率更高
2.0
>>> np.sqrt(ay) #math.sqrt()不能计算数组对象
array([ 3.16227766, 3.46410162, 3.60555128, 3.74165739])
>>> np.sin(ax)
array([ 0.84147098, 0.90929743, 0.14112001, -0.7568025 ])
NumPy扩展了Python列表的索引功能(尤其是多维数组方面):
>>> az = np.array([[1, 2, 3, 4],[5, 6, 7, 8],[9, 10, 11, 12],[13, 14, 15, 16]])
>>> az
array([[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12],
[13, 14, 15, 16]])
>>> az[0:2,2:4]
array([[3, 4],
[7, 8]])
>>> az[0:2,:]
array([[1, 2, 3, 4],
[5, 6, 7, 8]])
>>> az[0:2]
array([[1, 2, 3, 4],
[5, 6, 7, 8]])
>>> az[:,1:3] #取第2、3两列
array([[ 2, 3],
[ 6, 7],
[10, 11],
[14, 15]])
>>> az[,1:3] #只取列的时候,行部分不能留空!
File "<stdin>", line 1
az[,1:3]
^
SyntaxError: invalid syntax
条件替换(逻辑类似于列表推导式):
>>> np.where(az>10, 100, 99)
array([[ 99, 99, 99, 99],
[ 99, 99, 99, 99],
[ 99, 99, 100, 100],
[100, 100, 100, 100]])
>>> np.where(az>10, az, 99)
array([[99, 99, 99, 99],
[99, 99, 99, 99],
[99, 99, 11, 12],
[13, 14, 15, 16]])
九、矩阵与线性代数计算:numpy.matrix
>>> type(mz)
<class 'numpy.matrixlib.defmatrix.matrix'>
>>> mz
matrix([[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12],
[13, 14, 15, 16]])
>>> mz.T #矩阵行列转置
matrix([[ 1, 5, 9, 13],
[ 2, 6, 10, 14],
[ 3, 7, 11, 15],
[ 4, 8, 12, 16]])
十、随机选择:random模块(可用于均匀分布、正态分布、高斯分布等概率分布计算,不可用于加密,加密可用ssl模块)
从队列中随机选取N个元素:
>>> b
[1, 2, 3, 4, 8, 9]
>>> random.sample(b, 1)
[2]
>>> random.sample(b, 1)
[3]
>>> random.sample(b, 3)
[3, 2, 8]
>>> random.sample(b, 3)
[4, 9, 2]
原地打乱元素的顺序:
>>> o
[6, 3, 2, 4, 5, 7, 1]
>>> random.shuffle(o)
>>> o
[1, 3, 5, 7, 6, 2, 4]
产生随机整数:
>>> random.randint(-100,10)
-80
>>> random.randint(-100,10)
5
产生0-1之间的随机浮点数:
>>> random.random()
0.08408738274480865
>>> random.random()
0.3307587395045867
由N个随机bits所表示的整数(即N位随机二进制数字所表示的int):
>>> random.getrandbits(10)
932
>>> random.getrandbits(10)
684
>>> random.getrandbits(100)
449049712738822352045673826991
>>> random.getrandbits(100)
838121576315938044329535728101
十一、显示当天的日期
>>> from datetime import datetime
>>> datetime.today()
datetime.datetime(2016, 8, 11, 13, 8, 2, 369594)
Python3 From Zero——{最初的意识:003~数字、日期、时间}的更多相关文章
- JAVA中String.format的用法 格式化字符串,格式化数字,日期时间格式化,
1.对整数进行格式化:%[index$][标识][最小宽度]转换方式 我们可以看到,格式化字符串由4部分组成,其中%[index$]的含义我们上面已经讲过,[最小宽度]的含义也很好理解, ...
- Python3 From Zero——{最初的意识:008~初级实例演练}
一.构显国际橡棋8x8棋盘 #!/usr/bin/env python3 #-*- coding:utf-8 -*- color_0="\033[41m \033[00m" col ...
- Python3 From Zero——{最初的意识:006~数据编码与处理}
一.读写CSV数据: #!/usr/bin/env python3 #-*- coding=utf8 -*- import csv with open('kxtx.csv', 'rt') as f: ...
- Python3 From Zero——{最初的意识:002~字符串和文本}
一.使用多个界定符分割字符串 字符串.split(',')形式只适用于单一分割符的情况:多分割符同时应用的时候,可使用re.split() >>> line = 'asdf fjdk ...
- Python3 From Zero——{最初的意识:000~Initial consciousness}
http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000 a.编码 默认情况下,Python ...
- Python3 From Zero——{最初的意识:001~数据结构和算法}
一.从队列两端高效插入.删除元素,及保留固定数量的数据条目: collections.deque([iterable[,maxlen=N]]) a = collections.deque([1, 2] ...
- Python3 From Zero——{最初的意识:007~函数}
一.编写可接受任意数量参数的函数:*.** >>> def test(x, *args, y, **kwargs): ... pass ... >>> test(1 ...
- Python3 From Zero——{最初的意识:005~文件和I/O}
一.输出重定向到文件 >>> with open('/home/f/py_script/passwd', 'rt+') as f1: ... print('Hello Dog!', ...
- Python3 From Zero——{最初的意识:004~迭代器和生成器}
一.反向迭代:reversed() >>> a [1, 2, 3, 4] >>> for x in reversed(a): ... print(x, end=' ...
随机推荐
- 快速求排列C(m,n)加取模
快速求排列组合C(m,n)%mod 写在前面: 1. 为防止产生n和m的歧义,本博文一律默认n >= m 2. 本博文默认mod = 10^6+3 3. 本博文假设读者已知排列组合公式 C(m, ...
- PHP面试 PHP基础知识 六(正则表达式)
正则表达式 正则表达式的作用 分割.查找.匹配.替换字符串 分隔符:正斜线(/).hash符号(#).以及取反符号(~) 通用原子:\d(代表十进制的0-9).\D (取反除了0-9).\w(数字 ...
- HTML —— 表格
复习下关于html中的表格. 基本结构: 表格由 table 标签为父标签进行包裹,可以在 table 上添加几种属性. border : 定义表格的边框. cellspacing : 间距,指单元格 ...
- js文本框焦点自动聚焦到下个文本框
HTML: <form> <input type="text" name="text1" maxlength="3" si ...
- PCA降维-最大,最小方差解释
转自http://www.cnblogs.com/jerrylead/archive/2011/04/18/2020209.html http://www.cnblogs.com/jerrylead/ ...
- 利用MySqlBulkLoader生成csv文件,批量添加数据
DataTable dt = new DataTable(); dt.Columns.Add("Id", typeof(int)); dt.Columns.Add("Yw ...
- JavaScript深浅拷贝区别
分享一篇自己关注的微信订阅号(前端大全)文章:JavaScript浅拷贝与深拷贝 作者:浪里行舟 https://github.com/ljianshu/Blog/issues/5 这里很详细的讲解了 ...
- 前端实现预览ppt,word,xls,pdf文件
1.前端实现pdf文件在线预览功能 ps:刚好工作上有这个需求,所以到处找了一下处理方案,大家有需要可以试一下这几种方案,找到合适自己的 方式一. pdf文件理论上可以在浏览器直接打开预览但是需要打开 ...
- 一般处理程序(ashx)获取不到POST请求的参数问题
写了一个一般处理程序来做接口,由于字段Content是文本,长度可能很长,鉴于这个原因,所以不能GET请求 所以问题来了,当我改成POST请求,自己使用HttpHelper类来写了一个Demo cod ...
- 【胡策篇】题解 (UOJ 192 + CF938G + SPOJ DIVCNT2)
和泉纱雾与烟花大会 题目来源: UOJ 192 最强跳蚤 (只改了数据范围) 官方题解: 在这里哦~(说的很详细了 我都没啥好说的了) 题目大意: 求树上各边权乘积是完全平方数的路径数量. 这种从\( ...