十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
不是隔一个元素
吴起网站建设公司成都创新互联公司,吴起网站设计制作,有大型网站制作公司丰富经验。已为吴起1000多家提供企业网站建设服务。企业网站搭建\成都外贸网站建设要多少钱,请找那个售后服务好的吴起做网站的公司定做!
是因为你已经删掉前面的一个对应的位置也就变了。
比如a=['妈妈','爸爸','奶奶','爷爷','姐夫','毛珊','毛豆','姐姐','姑姑','姑父',"霖霖']
此时a[2]为'奶奶' ,a[3]为'爷爷'
a.pop(2)
那么a就变成了
['妈妈','爸爸','爷爷','姐夫','毛珊','毛豆','姐姐','姑姑','姑父',"霖霖']
此次a[2]为'爷爷',a[3]为'姐夫'
所以如果你想依次删掉对应的几个比如'奶奶','爷爷','姐夫','毛珊'
你可以从后往前删,这样前面的位置不受影响
a.pop(5)
a.pop(4)
a.pop(3)
a.pop(2)
由上篇文章我们已经得知邮件从发送到接收的过程:
发件人-MUA-MTA-若干MTA-MDA-MUA-收件人
本节接收邮件主要就是编写一个 MUA 客户端,从 MDA 将邮件取回本地。
收取邮件最常用的是 POP协议 ,目前版本是第三版,也称 POP3 。python内置了 poplib 模块,支持POP3协议。
回想上一节 SMTP ,我们对要发送的邮件内容进行了各种编码,包括添加MIME header,编码之后再进行发送。
因此,我们通过POP3协议接收的也不是原内容,而是经过一系列编码等处理的文本。
所以,要想把POP3收取的文本变为可阅读的邮件对象,就需要利用 email 模块对原始邮件进行解析。
所以,邮件收取的流程就是:
由上一篇 文章 最后总结部分可知。邮件由字符到发送到网络经历了如下的格式转化:
纯文本:
str-bytes-base64-str-bytes
二进制文件:
binary code-base64-str-bytes
我们解析邮件也是按这个思路,逆序解析出内容。
这里的 decode('utf-8') 先把字节流转化为字符串,再将字符串转化为 message 结构的对象。这步与发送邮件的 as_string 函数相反。
先从上一节结构化的 msg 中取出信件头,打印出来。
如果是 multipart 结构, get_payload 函数会返回一个包含不同part的list,然后对每一part递归调用 print_info ,打印子信件头和子信件内容。
不是 multipart 时,之后再依据 Content-Type 作不同处理:
如果是 text :
利用 get_payload(decode = Ture) 取出子信件的内容, decode 为True,则按照 Content-Transfer-Type 将 base64 或 QP 解码为 bytes 。
再 guess_charset 猜出编码方式,之后将其解码为字符显示。
如果不是 Text 对象,则为附件:
打印出附件的 Content-Type 。
这样写就可以了:
message=['a','b','c','d']
clone_message=message[:]
popped_message=clone_message.pop(0)
print(message)
print(popped_message)
运行结果如下图:
集合set的pop随机删除一个元素,并返回删除的元素。set里元素不重复且无序。既然是随机,你要控制什么。
字典也有pop,根据字典的key删除对应的键值对,并返回删除的那个值。
而且字典的pop还有第二个可选参数,比如dic.pop('aaa','没找到对应key')。如字典dic中存在key为aaa,那么删除这个key和它对应的值,并返回对应值。否则直接返回第二个参数内容。