作业: 更新数据库内容
思路: 交集 更新 原集合 交集 新集合 = 更新集合
差集 删除 原集合 差集 新集合 = 删除集合
添加 新集合 差集 原集合 = 添加集合
列表没有 交差集 要转成SET
old= set(old.keys())
new= set(new.keys())
delete_set= old.diferrence(old)
increase_set=new.deferrence(new)
update_set=old.intersection(new)
collection 系列: 补充
counter 是对字典的补充, 统计值出现次数,返回一个字典
most_common (n ) 返回频度最高的前n个值
elements() 原生集合元素
update(新数据) 在原数据基础上增加新的统计范围
subtract(新数据) 对新数据 做减法 处理
OrdereDict 有序字典
move_to_end () 把某元素移动到最后 或者最前(false)
pop(self,k, ) 按K值删除并返回
popitem(self) 按倒序顺序 删除并返回 ‘栈’模式
setdefult(self,k,d=None) 设置默认值
update()
defultdict 默认字典 核心是把Velue变成list格式, 可以使用append直接加入
dIc=collection.defultdict(list)
dic['k1'].append(11)
nametuple 可命名元祖
把元祖数据 建立名称,可以通过名称进行访问; 但是没提供类, 需要自己创建类才能使用
import collection
mytupleclass=collection.namedtuple('mytupleclass' ,['x','y','z',]) # 创建类的方式
obj=mytupleclass(11,22,33) #类实例化
内部建立对应关系的字典
双向队列 deque()
append 加单个元素
appendleft
count
extend([] )
extendleft([] )
index()
insert(self,index,v)
pop()
popleft()
remove
reverse 反转
rotate 尾部移到队头 , 即 右拿数据到左侧。
单向队列 放在queue内部
import queue
q=queue.Queue()
阻塞特性, 有内容里面拿, 永远在线等待,多线程可用
put
get
qsize
深浅拷贝 copy.copy()
浅拷贝 copy
深拷贝 deepcopy
赋值 =
字符串、数字 : 内存开辟了字符数字池,无论深浅拷贝,都使用同一内存地址。
元祖、列表、字典等:
赋值 : 内存地址相同
浅拷贝: 只拷贝key值, 而对应VALUE值不变; 内存中建立新空间并复制对应key值
深拷贝: 有多少层地址链接(key)都进行开辟内存空间并保存。
dic={
cpu:[80,],
disk:[80,],
mem:[80,],
}
print(dic)
new_dic=copy.copy(dic) new_dic=copy.deepcopy(dic)
new_dic[cpu][0]=50 new_dic[cpu][0]=50
print(dic) print(dic)
print(new_dic) print(new_dic)
两个字典cpu[0]同时改变为50 新字典cpu[0]改变为50 ,原字典不变
函数
def mail():
ret=true
try: # 调试模块
msg=MIMEText('邮件内容‘,‘plain','utf-8',)
msg['from']=formataddr(['张三',‘邮件地址’])
msg['TO']=formataddr('李四’,‘邮件地址’)
msg['Subject']=“主题”
sever=smtplib.SMTP('smtp.126.com',25)
sever.login('发件地址’,‘密码’)
sever.sendmail('发件地址',‘收件地址’,msg.as_string())
server.quit()
except:
ret=false
return ret
ret=mail()
if ret:
print("发送成功")
else:
print("发送失败")