zoukankan      html  css  js  c++  java
  • 模块:collections,Python中的扩展数据类型

    namedtuple:生成一个可以使用名字来访问的tuple
    from collections import namedtuple
    point = namedtuple('point',['x','y','z','r'])
    p = point(1,2,3,4)
    print(p.z)
    print(p.x)
    print(p.y)
    print(p.r)
    print(p)
    
    打印:
    3
    1
    2
    4
    point(x=1, y=2, z=3, r=4)
    deque:双队列 一个可迭代的 取一个少一个 只能从最前面或者最后面取,可以从最前面、最后面添加,可以插队添加

    from collections import deque
    lis = deque([1,2,3])
    lis.append(0) #从最前面添加一个元素
    lis.appendleft(4) #从最后面添加一个元素
    print(lis.pop())#取出最前面的一个元素
    print(lis.popleft())#取出最后面的一个元素
    lis.insert(3,'a')#指定位置添加一个元素
    print(lis)
    
    print('__iter__' in dir(deque))#可迭代的
    
    for i in lis:
        print(i)
    
    打印:
    0
    4
    deque([1, 2, 3, 'a'])
    True
    1
    2
    3
    a
     
    counter:计算次数 参数为可迭代的 返回元素出现的次数
    from collections import Counter
    number = Counter([1,1,1,2,1,2,1,3,3,4,5,1,4])
    print(number)
    
    #打印:
    Counter({1: 6, 2: 2, 3: 2, 4: 2, 5: 1})
    defaultdict:带默认值的字典 使用正常下的字典时时,如果引用的Key不存在,就会抛出KeyError。defaultdict可以设置默认值,如果key不存在,会给他一个设定的默认值
    from collections import defaultdict
    lis = defaultdict(lambda :'默认空的值')
    lis['key']
    print(lis)
    
    #打印:
    defaultdict(<function <lambda> at 0x0000026D959C8048>, {'key': '默认空的值'})
    
    
    # 例子:有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。
    
    from collections import defaultdict
    lis = [11,22,33,44,55,66,77,88,99,90]
    new_lis = defaultdict(list)
    for i in lis:
        if i > 66:
            new_lis['k1'].append(i)
        else:
            new_lis['k2'].append(i)
    print(new_lis)
    
    #打印:
    defaultdict(<class 'list'>, {'k2': [11, 22, 33, 44, 55, 66], 'k1': [77, 88, 99, 90]})
    OrderedDict:有序字典
    from collections import OrderedDict
    dic1 ={('a', 1), ('b', 2), ('c', 3), ('e', 4), ('d', 5)}
    print(dic1)#无序的
    
    dic = OrderedDict()
    dic['a'] = 1
    dic['b'] = 2
    dic['c'] = 3
    dic['e'] = 4
    dic['d'] = 5
    print(dic) #有序的 Key会按照插入的顺序排列,不是Key本身排序
    
    #打印:
    {('e', 4), ('a', 1), ('d', 5), ('b', 2), ('c', 3)}
    OrderedDict([('a', 1), ('b', 2), ('c', 3), ('e', 4), ('d', 5)])
  • 相关阅读:
    STM32 硬件I2C 到底是不是个坑?
    memory cache 和 disk cache
    希尔排序为什么不稳定
    17-18专业课
    fread和fseek的用法
    浅析alsa声卡驱动snd_interval结构体openmin,openmax和integer含义
    动态存储区、静态存储区、堆和栈的区别
    【专家坐堂Q&A】在 petalinux-config 中选择外部来源时,可将符号链路添加内核来源目录树
    模型文件后缀介绍
    @RestController注解
  • 原文地址:https://www.cnblogs.com/aizhinong/p/11424641.html
Copyright © 2011-2022 走看看