11、数据类型(集合、时间日历)

本文详细介绍了Python中的集合数据结构,包括可变集合(set)和不可变集合(frozenset)的定义、生成方法以及操作。同时涵盖了time模块和datetime模块在时间处理和日历方面的常用功能,如时间戳、时间元组的获取和格式化等。
摘要由CSDN通过智能技术生成

一、集合

1、定义:无序、不可随机访问、不可重复

2、可变集合(set)可增删改、不可变集合(frozenset)不能

3、可变集合生成:

        s={x,x,x}

        s=set(iterable),可迭代(若可迭代对象为字典,集合内只有key)

        集合推导式:s=set(x for x in range(m,n) if x % 2 == 0)

                              s={x for x in range(m,n) if x % 2 == 0}

4、不可变集合生成:

        s=frozenset(iterable)可迭代

        s=frozenset(x for x in range(m,n) if x % 2 == 0)

5、注意

        (1)创建空集合不能s={}会被识别为字典,只能用set()、frozenset()

        (2)集合中元素要为不可变类型(可哈希)

        (3)集合中元素不重复,重复会被合并

6、单个集合操作

        (1)增:s.add(不可变类型)

        (2)删:

                s.remove(ele)返回值为None,ele存在则删,不存在报错

                s.discard(ele)返回值为None,ele存在则删,不存在不操作

                s.pop()返回弹出数值,删除随机数值(因为集合无序)

                s.clear()清空集合中所有元素

        (3)改,无法更改,因为元素是不可变类型

        (4)查:无法通过索引或key查询,只能通过for in和迭代器进行遍历,可变集合与不可变集合相同,迭代器上一篇有写。

7、多个集合操作

        (1)交:s.intersection(s1),若为可变集合和不可变集合做运算,谁在左边,结果就是哪种类型;s&s1也可以,谁在左边,结果就是哪种类型;s.intersection_update(s1)会将结果赋值到s中,故s一定得是可变集合类型。

        (2)s.intersection(iterable)说明集合可以和可遍历类型交集,但原理是要将iterable转换为集合类型再做交集,故iterable内元素也需要为不可变类型(可哈希),不然会报错。

        (3)并:与交类似,union()、"|"、update()

        (4)差:与上述同,difference()、"-"、difference_update()

        (5)判定:isdisjoint()判定俩集合不相交、issuperset()判定一个集合是否包含另一个集合、issubset()判定一个集合是否包含于另一个集合

二、时间日历(开发过程中可能常用)

1、time模块

(1)时间戳(浮点数):从0时区的1970年1月1日0时0分0秒起,到所给定日期时间的秒数

        获取方式:

        print(time.time())

(2)时间元组(tm_year=年, tm_mon=月, tm_mday=日, tm_hour=时, tm_min=分, tm_sec=秒, tm_wday=这周的第几天, tm_yday=今年的第几天, tm_isdst=是否时夏令时)

         获取方式:

        print(time.localtime(second))  #second放时间戳

(3)格式化时间,可以对时间戳、时间元组进行格式化

        time.ctime()  #对时间戳格式化;time.asctime()  #对时间元组格式化;

(4)时间元组=>格式化日期。time.strftime(格式化字符串,时间元组),字符串格式format化时间,自定义格式对时间进行格式化。完整格式符含义这里写了:Python中时间和日期格式化符号 开源地理空间基金会中文分会 开放地理空间实验室 (osgeo.cn)

(5)格式化日期=>时间元组。time.strptime(日期字符串,格式化字符串)

(6)格式化日期=>时间元组。time.mktime(时间元组)

(7)获取CPU时间,可用于统计一段程序非执行耗时。time.perf_counter()返回浮点数

(8)休眠n秒。time.sleep(n)比如输出太频繁了可以减慢输出频率。

2、calendar模块,提供与日历相关的功能,eg:获取某月日历calendar.month(year,month)

3、datetime模块,处理时间和日期的标准库,还可以进行计算操作,eg:date类、time类。

(1)获取当天日期(模块.类.方法)

        print(datetime.datetime.now())
        print(datetime.datetime.today())

(2)获取当前年月日时分秒,第一点中的type(datetime.datetime.now())类型为datetime.datetime,是一个对象,故获取此对象中具体属性可以通过(对象.属性)获得,eg:

        t = datetime.datetime.now()
        print(t.year)

(3)计算给定增量时间后的新日期,eg:t+datetime.timedelta(days=7),timedelta指时间增量。

(4)计算两日期之间的时间差,直接用时间对象相减得到间隔类型<class 'datetime.timedelta'>,如果想将delta换算为其他单位可以delta.total_seconds()

  • 8
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值