• [Python入门及进阶笔记]Python基础数字处理相关模块


    博客迁往:新地址 (点击直达)

    新博客使用markdown维护,线下有版本库,自己写的所以会定时更新同步,同时提供更好的导航和阅读体验

    csdn对markdown支持不好,所以旧版不会花时间进行同步修订,抱歉


    ---------------------

    数字处理相关模块

    math

    1.简介

    >>> import math
    >>>dir(math)          #这句可查看所有函数名列表
    >>>help(math)         #查看具体定义及函数0原型
    

    2.常用函数

    ceil(x) 取顶
    floor(x) 取底
    fabs(x) 取绝对值
    factorial (x) 阶乘
    hypot(x,y)  sqrt(x*x+y*y)
    pow(x,y) x的y次方
    sqrt(x) 开平方
    log(x)
    log10(x)
    trunc(x)  截断取整数部分
    isnan (x)  判断是否NaN(not a number)
    degree (x) 弧度转角度
    radians(x) 角度转弧度
    

    另外该模块定义了两个常量:

    e = 2.718281828459045
    pi = 3.141592653589793
    

    random

    1.简介

    random是用于生成随机数,我们可以利用它随机生成数字或者选择字符串

    import random
    

    2.常用函数

    random.random()

    用于生成一个随机浮点数:range[0.0,1.0)

    >>> import random
    >>> random.random()
    0.999410896951364
    

    random.uniform(a,b)

    用于生成一个指定范围内的随机浮点数,a,b为上下限

    只要a!=b,就会生成介于两者之间的一个浮点数,若a=b,则生成的浮点数就是a

    >>> random.uniform(10,20)
    13.224754825064881
    >>> random.uniform(20,10)
    14.104410713376437
    >>> random.uniform(10,10)
    10.0
    

    random.randint(a,b)

    用于生成一个指定范围内的整数,a为下限,b为上限,生成的随机整数a<=n<=b;

    若a=b,则n=a;若a>b,报错

    >>> random.uniform(10,10)
    10.0
    >>> random.randint(10,20)
    15
    >>> random.randint(10,10)
    10
    >>> random.randint(20,10)
    Traceback (most recent call last):
    ……
    ValueError: empty range for randrange() (20,11, -9)
    

    random.randrange([start], stop, [,step])

    从指定范围内,按指定基数递增的集合中获取一个随机数,基数缺省值为1

    >>> random.randrange(10,100,5)
    95
    >>> random.randrange(10,100,5)
    45
    

    random.choice(sequence)

    从序列中获取一个随机元素,参数sequence表示一个有序类型,并不是一种特定类型,泛指list,tuple,字符串等

    >>> random.choice([1,2,3,4])
    1
    >>> random.choice([1,2,3,4])
    3
    >>> random.choice('hello')
    'e'
    

    random.shuffle(x[, random])

    用于将一个列表中的元素打乱

    >>> a = [1,2,3,4,5]
    >>> random.shuffle(a)
    >>> a
    [4, 5, 2, 1, 3]
    >>> random.shuffle(a)
    >>> a
    [3, 2, 5, 1, 4]
    

    random.sample(sequence, k)

    从指定序列中随机获取k个元素作为一个片段返回,sample函数不会修改原有序列

    >>> a = [1,2,3,4,5]
    >>> random.sample(a,3)
    [1, 4, 5]
    >>> random.sample(a,3)
    [1, 2, 5]
    >>> a
    [1, 2, 3, 4, 5]
    

    decimal

    1.简介

    默认,浮点数学缺乏精确性

    decimal 模块提供了一个 Decimal 数据类型用于浮点数计算。相比内置的二进制浮点数实现 float这个类型有助于

    金融应用和其它需要精确十进制表达的场合,
    控制精度,
    控制舍入以适应法律或者规定要求,
    确保十进制数位精度,或者用户希望计算结果与手算相符的场合。
    

    Decimal 重现了手工的数学运算,这就确保了二进制浮点数无法精确保有的数据精度。 高精度使 Decimal 可以执行二进制浮点数无法进行的模运算和等值测试。

    2.使用

    >>> from decimal import Decimal
    >>> Decimal('0.1') / Decimal('0.3')
    Decimal('0.3333333333333333333333333333')
    
    >>> from decimal import getcontext
    >>> getcontext().prec = 4 #设置全局精度
    >>> Decimal('0.1') / Decimal('0.3')
    Decimal('0.3333')    
    

    fractions

    分数类型

    构造

    >>> from fractions import Fraction
    >>> Fraction(16, -10)  #分子分母
    Fraction(-8, 5)
    >>> Fraction(123)   #分子
    Fraction(123, 1)
    
    >>> Fraction('3/7')   #字符串分数
    Fraction(3, 7)
    
    >>> Fraction('-.125')  #字符串浮点数
    Fraction(-1, 8)
    
    >>> Fraction(2.25)  #浮点数
    Fraction(9, 4)
    
    >>> from decimal import Decimal
    >>> Fraction(Decimal('1.1')) #Decimal
    Fraction(11, 10)
    

    计算

    >>> from fractions import Fraction
    >>> a = Fraction(1,2)
    >>> a
    Fraction(1, 2)
    >>> b = Fraction('1/3')
    >>> b
    Fraction(1, 3)
    >>> a + b
    Fraction(5, 6)
    >>> a - b
    Fraction(1, 6)
    

    The end!

    To be continue

    wklken

    Email: wklken@yeah.net

    Blog: http://blog.csdn.net/wklken

    2013-03-10

    转载请注明出处,谢谢

    Meet so Meet. C plusplus I-PLUS....
  • 相关阅读:
    Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'kindergarten.n.stuMChkTime' which is not functionally dependent on columns in GROUP BY clause; this is in
    ajax上传图片报错TypeError: 'append' called on an object that does not implement interface Fo
    Error:(1, 1) java: 非法字符: 'ufeff'
    SSM项目启动报错WEB-INFlibjavax.servlet-api-4.0.1.jar)
    SSH项目中使用struts-tags报错According to TLD or attribute directive in tag file, attribute test does not accept any expressions
    java查询数据库数据时报错antlr/ANTLRException
    [React Testing] Mock HTTP Requests with jest.mock in React Component Tests
    [React ARIA Testing] Test Accessibility of Rendered React Components with jest-axe
    [React Testing] Assert That Something is NOT Rendered with React Testing Library (with rerender & query)
    [React Testing] Improve Test Confidence with the User Event Module
  • 原文地址:https://www.cnblogs.com/iplus/p/4464614.html
Copyright © 2020-2023  润新知