• Python--进阶处理3


    # ===================第三章:数字日期和时间====================

    # ---------------------数字的四舍五入--------------------------
    # 对于简单的舍入运算,使用内置的round(value, ndigits) 函数
    # 当一个值刚好在两个边界的中间的时候, round 函数返回离它最近的偶数。也就是说,对1.5 或者2.5 的舍入运算都会得到2
    # 如果只是简单的输出一定宽度的数,不需要使用round() 函数
    x = 1.23456
    print(round(x, 3))
    print(format(x, '0.3f'))

    # ---------------------执行精确的浮点数运算---------------------
    # 如果想更加精确(并能容忍一定的性能损耗),可以使用decimal 模块
    from decimal import Decimal
    a = Decimal('4.2')
    b = Decimal('2.1')
    print(a + b)

    # ----------------------分数运算-----------------------------
    # fractions 模块可以被用来执行包含分数的数学运算
    from fractions import Fraction
    a = Fraction(5, 4)
    b = Fraction(7, 16)
    print(a + b)

    # ----------------------大型数组运算--------------------------
    # 涉及到数组的重量级运算操作,可以使用NumPy 库。NumPy 的一个主要特征是它会给Python 提供一个数组对象
    import numpy as np
    ax = np.array([1, 2, 3, 4])
    by = np.array([5, 6, 7, 8])
    print(ax * 2)
    print(ax + 10)
    print(ax + by)
    print(ax * by)

    # ----------------------随机选择-------------------------
    # random 模块有大量的函数用来产生随机数和随机选择元素
    # 从一个序列中随机的抽取一个元素,可以使用random.choice()
    import random
    values = [1, 2, 3, 4, 5, 6]
    print(random.choice(values))
    # 为了提取出N 个不同元素的样本用来做进一步的操作,可以使用random.sample()
    print(random.sample(values, 3))
    # 如果只是想打乱序列中元素的顺序,可以使用random.shuffle()
    random.shuffle(values)
    print(values)
    # 生成随机整数,请使用random.randint()
    num = random.randint(0, 10)
    print(num)
    # 为了生成0 到1 范围内均匀分布的浮点数,使用random.random()
    one = random.random()
    print(one)
    # 获取N 位随机位(二进制) 的整数,使用random.getrandbits()
    two = random.getrandbits(30)
    print(two)

    # ==============基本的日期和时间转换==================
    # 为了执行不同时间单位的转换和计算,请使用datetime 模块
    from datetime import timedelta
    a = timedelta(days=3, hours=6)
    b = timedelta(days=2)
    print(a-b)
    from datetime import datetime
    # 表示指定的日期和时间
    a = datetime(2019, 2, 9)
    print(a + timedelta(days=20))
    # 需要执行更加复杂的日期操作,比如处理时区,模糊时间范围,节假日计算等等,可以考虑使用dateutil 模块
    from dateutil.relativedelta import relativedelta
    d = datetime.now()
    print(d)
    print(d - relativedelta(days=-1))

    # --------------计算当前月份的日期范围--------------------
    from datetime import datetime, date, timedelta
    import calendar
    def get_month_range(start_date=None):
    if start_date is None:
    start_date = date.today().replace(day=1)
    _, days_in_month = calendar.monthrange(start_date.year, start_date.month)
    end_date = start_date + timedelta(days=days_in_month)
    return (start_date, end_date)
    print(get_month_range())

    # -----------------------字符串转换为日期-------------------------
    from datetime import datetime

    text = '2012:09:20'
    y = datetime.strptime(text, '%Y:%m:%d')
    print(y)
    print(datetime.now())
    # 需要注意的是, strptime() 的性能较差
    # 自定义解析函数
    def parse_ymd(s):
    year_s, mon_s, dat_s = s.split('-')
    return datetime(int(year_s), int(mon_s), int(dat_s))
    print(parse_ymd('2011-11-11'))

    # --------------------结合时区的日期操作-----------------------
    # 对几乎所有涉及到时区的问题,应该使用pytz 模块
    # pytz 模块一个主要用途是将datetime 库创建的简单日期对象本地化
    from datetime import datetime
    from pytz import timezone
    d = datetime(2018, 2, 8, 9, 30, 0)
    print(d)
    central = timezone('US/Central')
    loc_d = central.localize(d)
    print(loc_d)



  • 相关阅读:
    C#泛型使用小记
    Unity3d + NGUI 的多分辨率适配
    CodeSmith(1 生成实体)
    从数据库读取数据Table后转成对应的实体泛型方法
    安卓data./data没数据的时候
    Java工具
    SqlBulkCopy 用法
    Wind7 64位配置安卓环境
    .net和c#下的自定义配置
    Log4Net可以根据不同的类容输出到不同的文件夹下面
  • 原文地址:https://www.cnblogs.com/fqfanqi/p/8425489.html
Copyright © 2020-2023  润新知