zoukankan      html  css  js  c++  java
  • 发邮件、排序、FIFO

     
    发送邮件.py:
     
    import smtplib
    from email.mime.text import MIMEText
     
    def email(receiver, title='标题', body='正文'):
        host='smtp.qq.com' #smtp.163.com
        port=465    #25
        sender='904477955@qq.com'  #davidcheng@163.com
        pwd='cvabe****yhebeab'  #QQ是帐户→POP3下用1毛短信生成的授权码,网易是登录码
     
        msg=MIMEText(body, 'html','utf8')   #正文纯文本是plain
        msg['subject']=title
        msg['from']=sender
        msg['to']=receiver
     
        s=smtplib.SMTP_SSL(host, port)  #smtplib.SMTP('smtp.163.com', 25)
        s.login(sender, pwd)
        s.sendmail(sender, receiver, msg.as_string())
     
        print('The mail %s,to %s,is sended successly.' %(title, receiver))
    ******************分割线******************
    在同目录下的某py文件下使用:
     
    from 发送邮件 import email
     
    email('1398645374@qq.com','测试邮件','邮件正文正文正文正文正文')
    ****************************************分割线****************************************
    冒泡排序:
     
    t=[87, 69, 42, 25, 10]
    for y in range(1,len(t)):   #取出第y大;最末大无需排序
        # 每轮内循环的结果是让最大的去了末尾,故下轮比较不需加它
        for x in range(len(t)-y):
            if t[x]>t[x+1]:
                t[x],t[x+1]=t[x+1],t[x]
        print(t)
    ******************分割线******************
    二级排序:先以score排序,score相同的以name排序:
     
    class Student:
        def __init__(self,name,score):
            self.name=name
            self.score=score
        def __str__(self):
            return '%s:%d' %(self.name,self.score)
     
    L=[Student('Tim',99),Student('Bob',88),Student('Alice',99)]
    L=sorted(L,key=lambda x:[x.score,x.name])
    print([x.__str__() for x in L])
    ******************分割线******************
    array=['甲','乙','丙','丁','戊'];order=list('qwert')
    列表x按列表y作原序排=[array[i] for i in [sorted(order).index(o) for o in order]]
    列表x按列表y作升序排=[x[0] for x in sorted(zip(array,order),key=lambda item:item[1])]
    ******************分割线******************
    list、set、dict的快速排序:
    容器内各元素的类型要相同,否则无法排序而报错。
     
    from sortedcontainers import SortedList,SortedListWithKey ,SortedSet,SortedDict
     
    sl=SortedList(range(int(1e5)))
     
    总数=len(sl)
    元素1的个数=sl.count(1)
    序列里有无1234=1234 in sl
    sl*=2   #各元素翻倍;如同list*2后再做升序
    sl.discard(666)  #删首个,类型要一致,而.remove(value)或.pop(index)在不存在时会报错
    del sl[5:20]    #按索引位置批量删除
    sl.add(6)   #sl.append(6)或sl.insert(0,6)不行,须append的值≥sl[-1]或insert处的值在左右间
    sl+=range(3,7)  #同sl.update(range(3,7)),自动升序了;而extend要list升序且各值≥sl[-1]
    #sl[2:9]=range(10,20) #×:修改某个或某些元素时,升序的顺序不能破坏
    降序=list(reversed(sl))
    按索引提取个区间并降序=list(sl.islice(2,9,True))
    按值提取个不包括max的区间并降序=list(sl.irange(5,50,(True,False),True))
     
    自定义排序の按末位=SortedListWithKey(map(str,range(999)),lambda x:x[-1])
    ******************分割线******************
    FirstInFirstOut的有序字典:
     
    from collections import OrderedDict
     
    class FIFO(OrderedDict):
        def __init__(self, capacity=3,*args,**kwargs):
            self.capacity = capacity    #写到super()句后,就报错无capacity属性
            #super(FIFO,self).__init__(*args,**kwargs)及OrderedDict.__init__(self,*args,**kwargs)
            super().__init__(*args,**kwargs)    #等同上行的两种写法
     
        def __setitem__(self, key, value):
            if key in self:
                print('delete existed key:',(key,self[key]))
                del self[key]
            elif len(self)==self.capacity:  #表面批增key,实为逐增,用>=有点画蛇添足
                front=self.popitem(last=False)
                print('delete front key:',front)
            # 如同上文的构造函数,在用到父类的同名函数时,须等到结尾才来调用
            OrderedDict.__setitem__(self,key,value)   #super().__setitem__(key,value)
     
    fd=FIFO(3,{'w':7,'x':8,'y':9,'z':0})
    print(fd)
    fd.update([('a',1),('b',2),('c',3),('d',4),('e',5)])
    print(fd)
    fd.update({'f':6,'e':9})
    print(fd)
  • 相关阅读:
    GB/T 29311-2020 电气绝缘材料和系统 交流电压耐久性评定
    GB/T 36290.1-2020 电站流程图 第1部分:制图规范
    GB 50646-2020 特种气体系统工程技术标准
    T/CECS 644-2019 恒温恒湿实验室工程技术规程
    GB/T 38808-2020 建筑结构用波纹腹板型钢
    DL/T 1848-2018 220kV和110kV变压器中性点过电压保护技术规范
    这一周发生的事,也该醒醒了!
    pytest-09(conftest.py的层级作用)
    pytest-08(fixtrue的详细使用)
    pytest-07(使用装饰器fixtrue中的autose=True)
  • 原文地址:https://www.cnblogs.com/scrooge/p/7761056.html
Copyright © 2011-2022 走看看