python学习之路 第三天

时间:2023-03-09 07:23:15
python学习之路 第三天

1、set集合:去掉重复字段

set.difference()找出不同并创建一个新的集合,不改变原来集合;

set.difference_update() 改变原来集合,剔除掉括号内容;

set.discard() 移除元素;

set.intersection() 取交集;

set.symmetric_difference() 对称差,差集。

2、set.difference() 与 set.symmetric_difference() 对比

#!/usr/bin/env python3

s1 = set([11,22,33])
     s2 = set([22,44])
     ret1 = s1.difference(s2)
     ret2 = s1.symmetric_difference(s2)
     print(ret1)
     print(ret2)

运行结果:{33, 11}  {33, 11, 44}   ret1只循环了s1,ret2循环了s1后又循环了s2,循环2次。

3、collections系列:

counter 计数器;

most_common 取前几位;

elements() 原生的值;

subtract() 相减,减去括号内出现的次数;

orderedDict 有序字典;

defaultdict 默认字典;

4、#!/usr/bin/env python3
     import collections
     f = collections.Counter('abcdabcdaabbd')
     print(f)

运行结果:Counter({'a': 4, 'b': 4, 'd': 3, 'c': 2})

5、collections.namedtuple() 可命名元祖
     #!/usr/bin/env python3
     import collections
     mytupleclass = collections.namedtuple('mytupleclass',['x','y','z'])
     obj = mytupleclass(11,22,33)
     print(obj.x)
     print(obj.y)
     print(obj.z)

运行结果:11 22 33

6、deque 队列

7、copy.copy() 浅拷贝

copy.deepcopy() 深拷贝

#!/usr/bin/env python3

import copy

dic = {     "cpu":[80],     "mem":[80],     "disk":[80] }

print('before',dic)

new_dic = copy.copy(dic)

new_dic['cpu'][0] = 50

print(dic)

print(new_dic)

运行结果:

before {'cpu': [80], 'mem': [80], 'disk': [80]}

{'cpu': [50], 'mem': [80], 'disk': [80]}

{'cpu': [50], 'mem': [80], 'disk': [80]}

#!/usr/bin/env python3

import copy

dic = {     "cpu":[80],     "mem":[80],     "disk":[80] }

print('before',dic)

new_dic = copy.deepcopy(dic)

new_dic['cpu'][0] = 50

print(dic)

print(new_dic)

运行结果:

before {'cpu': [80], 'mem': [80], 'disk': [80]}

{'cpu': [80], 'mem': [80], 'disk': [80]}

{'cpu': [50], 'mem': [80], 'disk': [80]}

8、函数

#!/usr/bin/env python3

import smtplib

from email.mime.text import MIMEText

from email.utils import formataddr

def mail():

ret = 'success'

try:

msg = MIMEText('邮件内容','plain','utf-8')

msg['From'] = formataddr(["111",'1111@qq.com'])

msg['To'] = formataddr(["222",'2222@qq.com'])

msg['Subject'] = "主题"

server = smtplib.SMTP("smtp.qq.com",25)

server.login("1111@qq.com","输入邮箱密码")

server.sendmail('1111@qq.com',['2222@qq.com',],msg.as_string())

server.quit()

except Exception:

ret = 'fail'

return ret

ret = mail()

print(ret)

运行结果:fail,实验使用真实邮箱获得结果为success。