• Day27


     

    1、collections

    默认字典最大的好处就是永远不会在你使用key获取值的时候报错

    默认字典是给字典中的value设置默认值

    # 默认字典
    # 有如下值集合 [11,22,33,44,55,66,77,88,99,90...],
    # 将所有大于 66 的值保存至字典的第一个key中,
    # 将小于 66 的值保存至第二个key的值中。
    dic={}
    l=[11,22,33,44,55,66,77,88,99,90]
    for i in l:
        if i>66:
            if dic.get('k1'):
                dic['k1'].append(i)
            else:
                dic['k1']=[i]
        elif i<66:
            if dic.get('k2'):
                dic['k2'].append(i)
            else:
                dic['k2']=[i]
    print(dic)
    from collections import defaultdict
    d = defaultdict(list)
    l = [11,22,33,44,55,66,77,88,99,90]
    for i in l:
        if i>66:
            d['k1'].append(i)
        elif i<66:
            d['k2'].append(i)
    
    print(d)
    View Code
    from collections import defaultdict
    d=defaultdict(set)
    print(d)
    print(d['a'])
    d['b']=10
    print(d)
    View Code
    {}默认的value是5
    from collections import defaultdict
    d=defaultdict(lambda :5)
    print(d[1])
    print(d)
    View Code
    from collections import Counter
    c = Counter('abcdeabcdabcaba')
    print(c)
    View Code
    class Configparser:
        def __init__(self,section,option):
            self.section = section
            self.option = option
        def write(self,f):
            f.write(self.section,self.option)
    
    f = open('test','w')
    config = Configparser('a','b')
    config.write(f)
    View Code

    2、time模块

    记录时间的格式:

      给人看的

      给机器看的

      计算用的

    时间戳时间:给机器看的

    print(time.time())

    格式化时间:给人看的

    %y 两位数的年份表示(00-99%Y 四位数的年份表示(000-9999%m 月份(01-12%d 月内中的一天(0-31%H 24小时制小时数(0-23%I 12小时制小时数(01-12%M 分钟数(00=59%S 秒(00-59%a 本地简化星期名称
    %A 本地完整星期名称
    %b 本地简化的月份名称
    %B 本地完整的月份名称
    %c 本地相应的日期表示和时间表示
    %j 年内的一天(001-366%p 本地A.M.或P.M.的等价符
    %U 一年中的星期数(00-53)星期天为星期的开始
    %w 星期(0-6),星期天为星期的开始
    %W 一年中的星期数(00-53)星期一为星期的开始
    %x 本地相应的日期表示
    %X 本地相应的时间表示
    %Z 当前时区的名称
    %% %号本身
    View Code

    print(time.strftime('%Y-%m-%d %H:%M%S'))  字符串格式化时间

    结构化时间

    索引(Index)

    属性(Attribute)

    值(Values)

    0

    tm_year(年)

    比如2011

    1

    tm_mon(月)

    1 - 12

    2

    tm_mday(日)

    1 - 31

    3

    tm_hour(时)

    0 - 23

    4

    tm_min(分)

    0 - 59

    5

    tm_sec(秒)

    0 - 60

    6

    tm_wday(weekday)

    0 - 6(0表示周一)

    7

    tm_yday(一年中的第几天)

    1 - 366

    8

    tm_isdst(是否是夏令时)

    默认为0

    #时间元组:localtime将一个时间戳转换为当前时区的struct_time

    time.localtime()

    time.struct_time(tm_year=2017, tm_mon=7, tm_mday=24,           

    tm_hour=13, tm_min=59, tm_sec=37, tm_wday=0, tm_yday=205, tm_isdst=0)

    几种格式之间的转换

    #时间戳-->结构化时间
    #time.gmtime(时间戳)    #UTC时间,与英国伦敦当地时间一致
    #time.localtime(时间戳) #当地时间。例如我们现在在北京执行这个方法:与UTC时间相差8小时,UTC时间+8小时 = 北京时间 
    >>>time.gmtime(1500000000)
    time.struct_time(tm_year=2017, tm_mon=7, tm_mday=14, tm_hour=2, tm_min=40, tm_sec=0, tm_wday=4, tm_yday=195, tm_isdst=0)
    >>>time.localtime(1500000000)
    time.struct_time(tm_year=2017, tm_mon=7, tm_mday=14, tm_hour=10, tm_min=40, tm_sec=0, tm_wday=4, tm_yday=195, tm_isdst=0)
    
    #结构化时间-->时间戳 
    #time.mktime(结构化时间)
    >>>time_tuple = time.localtime(1500000000)
    >>>time.mktime(time_tuple)
    1500000000.0
    View Code
    #结构化时间-->字符串时间
    #time.strftime("格式定义","结构化时间")  结构化时间参数若不传,则现实当前时间
    >>>time.strftime("%Y-%m-%d %X")
    '2017-07-24 14:55:36'
    >>>time.strftime("%Y-%m-%d",time.localtime(1500000000))
    '2017-07-14'
    
    #字符串时间-->结构化时间
    #time.strptime(时间字符串,字符串对应格式)
    >>>time.strptime("2017-03-16","%Y-%m-%d")
    time.struct_time(tm_year=2017, tm_mon=3, tm_mday=16, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=75, tm_isdst=-1)
    >>>time.strptime("07/24/2017","%m/%d/%Y")
    time.struct_time(tm_year=2017, tm_mon=7, tm_mday=24, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=205, tm_isdst=-1)
    View Code

    #结构化时间 --> %a %b %d %H:%M:%S %Y串
    #time.asctime(结构化时间) 如果不传参数,直接返回当前时间的格式化串
    >>>time.asctime(time.localtime(1500000000))
    'Fri Jul 14 10:40:00 2017'
    >>>time.asctime()
    'Mon Jul 24 15:18:33 2017'
    
    #时间戳 --> %a %d %d %H:%M:%S %Y串
    #time.ctime(时间戳)  如果不传参数,直接返回当前时间的格式化串
    >>>time.ctime()
    'Mon Jul 24 15:19:07 2017'
    >>>time.ctime(1500000000)
    'Fri Jul 14 10:40:00 2017' 
    View Code

    3、random模块

    >>> import random
    #随机小数
    >>> random.random()      # 大于0且小于1之间的小数
    0.7664338663654585
    >>> random.uniform(1,3) #大于1小于3的小数
    1.6270147180533838
    #发红包
    
    #随机整数
    >>> random.randint(1,5)  # 大于等于1且小于等于5之间的整数
    >>> random.randrange(1,10,2) # 大于等于1且小于10之间的奇数
    
    
    #随机选择一个返回
    >>> random.choice([1,'23',[4,5]])  # #1或者23或者[4,5]
    #随机选择多个返回,返回的个数为函数的第二个参数
    >>> random.sample([1,'23',[4,5]],2) # #列表元素任意2个组合
    [[4, 5], '23']
    
    
    #打乱列表顺序
    >>> item=[1,3,5,7,9]
    >>> random.shuffle(item) # 打乱次序
    >>> item
    [5, 1, 3, 7, 9]
    >>> random.shuffle(item)
    >>> item
    [5, 9, 7, 1, 3]
    View Code

    4、sys模块

    sys.argv 命令行参数List,第一个元素是程序本身路径
    sys.exit(n) 退出程序,正常退出时exit(0),错误退出sys.exit(1)
    sys.version 获取Python解释程序的版本信息
    sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
    sys.platform 返回操作系统平台名称

    import sys
    print('*'*6)
    sys.exit()      #退出程序,正常退出时exit(0),错误退出sys.exit(1)
    print('-'*6)
    View Code

    内存
    程序在运行起来的时候
    启动解释器 加载一些基础的内容 内置函数 内置模块 -->内存里
    sys.path 系统的路径 import
    import os,sys

    import sys
    if sys.argv[1]=='aelx' and sys.argv[2]=='3714':
        print('登陆成功')
    else:
        sys.exit()
    View Code
    # 执行一个程序
    # debug
    # 直接执行
    import sys 
    import logging
    inp=sys.argv[1] if len(sys.argv)>1 else 'WARNING'
    logging.basicConfig(level=getattr(logging,inp))    #DEBUG
    num=int(input('>>>'))
    logging.debug(num)
    a=num*100
    logging.debug(a)
    b=a-10
    logging.debug(b)
    c=b+5
    print(c)
    View Code
  • 相关阅读:
    如何让一个浮动垂直居中:两种方式!带来效果~~~~~~
    rgba()和opacity之间的区别(面试题)
    常用浏览器内核!IE,Chrome ,Firefox,Safari,Opera 等内核
    有关Option.inSamplSize 和 Compress 图片压缩
    Android App 启动 Activity 创建解析
     (转)windows一台电脑添加多个git账号
    Handler向子线程发送数据
    Android Touch事件分发
    int 转十六进制
    JVM client模式和Server模式
  • 原文地址:https://www.cnblogs.com/a352735549/p/8931369.html
Copyright © 2020-2023  润新知