zoukankan      html  css  js  c++  java
  • Python基础及语法(四)

    解析式和生成器表达式

    列表解析式

    语法:[返回值 for 元素 in 可迭代对象 if 条件]立刻生成一个全新的列表。

    1 # [0, 2, 4, 6, 8, 10],打印10以内的偶数列表。
    2 print([i for i in range(0, 11, 2)])
    3 print([i*2 for i in range(6)])
    4 print([i for i in range(11) if i % 2 == 0])

    生成器表达式

    语法:在列表解析式的基础上把中括号换成小括号即可,返回一个生成器对象。

    1 # <generator object <genexpr> at 0x00xxx...xxx>,10以内的偶数生成器。
    2 print((i for i in range(0, 11, 2)))

    生成器和列表解析式区别:

    生成器:惰性,延迟计算,返回生成器对象,是迭代器,可迭代一次。内存占用小。生成速度快,不进行运算,只生成一个生成器对象。

    列表解析式:立刻计算,返回一个新列表,不是迭代器,但可重复迭代。内存占用大,生成速度慢,需要运算得出完整的列表。

    注意:可迭代对象不一定是迭代器,生成器是迭代器的一种。

    集合解析式和字典解析式

    语法:集合解析式在列表解析式的基础上把中括号换成大括号即可,立刻生成一个全新的集合。

    # {0, 2, 4, 6, 8, 10},打印10以内的偶数集合。
    print({i for i in range(0, 11, 2)})
    print({i*2 for i in range(6)})
    print({i for i in range(11) if i % 2 == 0})

    语法:字典解析式在集合解析式的基础上,返回值是key: value形式即可,立刻生成一个全新的字典。

    1 # {0: 0, 2: 4, 4: 16, 6: 36, 8: 64, 10: 100},打印10以内的偶数为key,该key的平方为value的字典。
    2 print({i: i**2 for i in range(0, 11, 2)})
    3 print({i*2: (i*2)**2 for i in range(6)})
    4 print({i: i**2 for i in range(11) if i % 2 == 0})

    注意:集合返回值与字典返回值的key必须可哈希。

    时间模块

    datetime模块datetime类

     1 from datetime import datetime as dt  # 导入datetime模块中的datetime类被赋予别名为dt
     2 print(dt.now())  # now返回当前时区时间,精确到毫秒,不带时区信息
     3 print(dt.utcnow())  # utcnow返回当前0时区时间,精确到毫秒,不带时区信息
     4 print(dt.timestamp(dt.now()))  # timestamp指定一个datetime类时间,返回该时间的时间戳
     5 print(dt.fromtimestamp(1234567.89))  # fromtimestamp指定一个数值类时间戳,返回该时间戳的时间
     6 print(dt(2022, 2, 22, 11, 15, 8, 5))  # datetime类构造一个时间,返回datetime类时间
     7 print(dt.now().year)  # year返回datetime类时间的年
     8 print(dt.now().month)  # month返回datetime类时间的月
     9 print(dt.now().day)  # day返回datetime类时间的日
    10 print(dt.now().hour)  # hour返回datetime类时间的时
    11 print(dt.now().minute)  # minute返回datetime类时间的分
    12 print(dt.now().second)  # second返回datetime类时间的秒
    13 print(dt.now().microsecond)  # microsecond返回datetime类时间的毫秒
    14 print(dt.now().weekday())  # weekday返回0-6,代表datetime类时间星期一到星期日,0是星期一,6是星期日
    15 print(dt.now().isoweekday())  # isoweekday返回1-7,代表datetime类时间星期一到星期日,1是星期一,7是星期日
    16 print(dt.now().date())  # date返回date对象的时间
    17 print(dt.now().time())  # time返回time对象的时间

    日期格式化

     1 from datetime import datetime as dt  # 导入datetime模块中的datetime类被赋予别名为dt
     2 print(dt.now())  # now返回当前时区时间,精确到毫秒,不带时区信息
     3 print(dt.utcnow())  # utcnow返回当前0时区时间,精确到毫秒,不带时区信息
     4 print(dt.timestamp(dt.now()))  # timestamp指定一个datetime类时间,返回该时间的时间戳
     5 print(dt.fromtimestamp(1234567.89))  # fromtimestamp指定一个数值类时间戳,返回该时间戳的时间
     6 print(dt(2022, 2, 22, 11, 15, 8, 5))  # datetime类构造一个时间,返回datetime类时间
     7 print(dt.now().year)  # year返回datetime类时间的年
     8 print(dt.now().month)  # month返回datetime类时间的月
     9 print(dt.now().day)  # day返回datetime类时间的日
    10 print(dt.now().hour)  # hour返回datetime类时间的时
    11 print(dt.now().minute)  # minute返回datetime类时间的分
    12 print(dt.now().second)  # second返回datetime类时间的秒
    13 print(dt.now().microsecond)  # microsecond返回datetime类时间的毫秒
    14 print(dt.now().weekday())  # weekday返回0-6,代表datetime类时间星期一到星期日,0是星期一,6是星期日
    15 print(dt.now().isoweekday())  # isoweekday返回1-7,代表datetime类时间星期一到星期日,1是星期一,7是星期日
    16 print(dt.now().date())  # date返回date对象的时间
    17 print(dt.now().time())  # time返回time对象的时间
    18 print(dt.strptime('2022-02-22 11:15:8.5', '%Y-%m-%d %H:%M:%S.%f'))  # strptime指定一个时间与时间输出格式,按格式返回一个datetime对象时间
    19 # strftime
    20 print(dt.strftime(dt.now(), '%Y-%m-%d %H:%M:%S.%f')) #指定一个datetime对象与时间输出格式,按格式返回一个字符串时间
    21 print(dt.now().strftime('%Y-%m-%d %H:%M:%S.%f')) #指定一个时间输出格式,按格式返回一个字符串时间
    22 print('{:%Y-%m-%d %H:%M:%S.%f}'.format(dt.now())) #format也能按格式返回一个字符串时间

    时间格式可在帮助文档查询

     datetime模块timedelta类与time模块

    1 import datetime
    2 import time
    3 d1 = datetime.datetime.now()
    4 time.sleep(5)  # time模块sleep类指定一个数值,将调用线程挂起指定秒数
    5 d2 = datetime.datetime.now()
    6 print(d2-d1)  # datetime对象自身可以做时间差运算
    7# timedelta类指定一个或以上参数,生成一个timedelta对象,可与datetime对象做时间加减运算
    8 dt = datetime.timedelta(days=1, seconds=2, microseconds=3, milliseconds=4, minutes=5, hours=6, weeks=7) 9 print(d1+dt, d2-dt) # datetime对象可与timedelta对象做加减时间运算,datetime对象自身不能相加
  • 相关阅读:
    Irrlicht入门教程,下载安装运行
    git 命令用法 流程操作
    summernote富文本编辑器的使用
    MVC进行多文件上传
    jQuery中的for循环var与let的区别
    识别图片中文字(百度AI)
    sublime安装 和 插件安装
    nopCommerce电子商务平台 安装教程(图文)
    springMVC 配置和使用
    mysql 一看就会 基本语法
  • 原文地址:https://www.cnblogs.com/bgr1115/p/12685351.html
Copyright © 2011-2022 走看看