set
可变 无序 不重复 的元素的集合 非线性
s={} 定义空字典
定义空Set
s=set()
set dict list bytearray不能hash
set元素不可以索引 可以迭代
set.add(value) 添加单个元素
set.update(iterable)
set.remove(value) 删除 keyerror
set.discard(value) 删除 无值不报错
set.pop()随机弹出
set.clear()清空setset
无修改方法
线性结构查询时间复杂度On
set dict等可做到O(1)
in 和 not in 判断元素是否在set中
集合运算
- 并集
union(*others)返回多个集合合并后的新集合
updates(*others)多个集合合并 就地就该
|等同union 返回新的
|=等同update 就地修改
- 交集
intersection(*others)返回多个集合的交集
intersection_update(*others)获取多个集合的交集并就修改
&等同intersection
&=等同intersection_update
- 差集
difference(*others)返回和多个集合的差集
differenc_update(*others)返回和多个集合的差集并就地修改
-等同difference
-=等同differenc_update
- 对称差集(等于两个集合的并集减交集)
symmetric_difference(other)返回和另一个集合的差集
symmetric_difference_update(other)返回和另一个集合的差集并就地修改
^等同symmetric_difference
^=等同symmetric_difference_update
字典dict
key-value键值对的数据的集合
可变 无序 key不重复 key必须和hash
定义 初始化
d={} d=dict()
dict(**kwargs)使用key=value键值对初始化一个字典
dict(iterable,**kwargs)使用可迭代对象和kv键值对狗仔字典,但是可迭代对象的元素必须是一个二元结构
dict(mapping,**kwargs)使用一个字典构建另一个字典,如果**kwargs键值对和映射过来的字典的key重复,则覆盖对应value
d={‘a’:10,‘b’:20}直接定义
类方法dict.fromkeys(iterable,[value])如果没有value则所有key的对应值为NONE,如果有value则所有的key对应值为value
dict[k]
返回key对应值value,无key则报错keyerror
dict.get[key,[default]]
返回key对应值value,key不存在则返回缺醒值,若没有设置缺醒值则返回NONE
dict.setdefault(key,[default])
返回key对应值value,若key不存在则添加键值对,若没有设置缺醒值则为NONE
dict[key]=value
将key对应值修改为value,若key不存在则添加新的键值对
dict.update([other])
使用另一个字典的kv对更新本字典
key不存在就添加
key存在则覆盖对应value
就地修改
dict.pop(key,[default])
key存在则移除并返回对应value
key不存在则返回设置的default
default未设置且key不存在则报错keyerror
dict.popitem()
移除并返回一个任意的键值对(元祖)
若字典为空则报错Keyerror
dict.clear()
清空字典
del dict[key] 将对应的kv对从字典移除 对应value的引用计数减一
for key in dict(=dict.keys())
遍历的是key
for i in dict.items():
print(i)
打印出的是kv键值对元祖
容器一般使用for循环
等价
import collections
d=collections.defaultdict()
from collections import defaultdict
d=defaultdict()
当key不存在的时候,根据defaultdict(type)的类型构造一个空类型value
from collections import OrderedDict
key有序字典 会根据放入元素的先后顺序进行排序
OrderedDict对象的字典对象,如果其顺序不同那么Python也会把他们当做是两个不同的对象
3.6版本Python的字典就是记录key插入顺序
标准库datetime
datetime模块
datetime类
类方法
today()返回本地时区当前时间的datetime对象
now(tz=None)返回当前时间的datetime对象 时间到微秒 ,如果tz为None,返回和today()一样
utcnow()没有时区的当前时间
fromtimestamp(timestamp,tz=None)从一个时间戳返回一个datetime对象
datetime对象
timestamp()返回一个到微秒的时间戳
时间戳:从格林威治时间1970.1.1 00:00到现在的秒数
构造方法
datetime.datetime(Y,m,d,H,M,S,微秒)
weekday()返回星期的天 周一0周日6
isoweekday()返回星期的天 周一1周日7
date()返回日期date对象
time()返回时间time对象
replace()修改并返回新的时间
isocalendar返回一个三元组(年,周数,周的天)
日期格式化
类方法strptime(date_string,format),返回datetime对象
对象方法strtime(format)返回字符串
字符串format函数格式化
timedelta对象
=两个datetime对象相减
构造方法
datetime.timedelta(days=0,seconds=0,microseconds=0,milliseconds=0,minutes=0,hours=0,weeks=0)
year=datetime.timedelta(day=365)
total_seconds()返回时间差的总秒数
time模块
time.sleep(secs)将调用线程挂起指定的秒数