zoukankan      html  css  js  c++  java
  • 内建模块collections的使用

    # -*-coding:utf-8  -*-
    from   collections  import  namedtuple
    Point=namedtuple('Point',['x','y'])
    p=Point(1,2)
    print p.x
    #1
    print  p.y
    #2
    
    # namedtuple是一个函数,它用来创建一个自定义的tuple对象,并且规定了tuple元素的个数,并可以用属性而不是索引来引用tuple的某个元素。
    
    # 这样一来,我们用namedtuple可以很方便地定义一种数据类型,它具备tuple的不变性,又可以根据属性来引用,使用十分方便。
    print isinstance(p,Point)
    #True
    print  isinstance(p,tuple)
    # True
    #如果要用坐标和半径表示一个圆,也可以用namedtuple定义:
    Circle=namedtuple('Circle',['x','y','z'])
    
    #使用list存储数据时,按索引访问元素很快,但是插入和删除元素就很慢了,因为list是线性存储,数据量大的时候,插入和删除效率很低
    #deque 是为了高效实现插入和删除操作的双向列表,适合用于队列和栈:
    from  collections  import   deque
    
    q=deque(['a','b','c'])
    q.append('x')
    q.appendleft('y')
    print  q
    # deque(['y', 'a', 'b', 'c', 'x'])
    
    #defaultdict
    #使用 dict时,如果引用的key不存在,就会抛出keyError.如果希望key不存在时,返回一个默认值,就可以使用defaultdict:
    from  collections  import  defaultdict
    dd=defaultdict(lambda:'N/A')
    dd['key1']='abc'
    print  dd['key1']
    # abc
    print   dd['key2']
    # N/A
    
    
    #OrderedDict
    #使用dict时,key是无序的,在对dict做迭代时,我们无法确定key的顺序,如果要保持key的顺序,可以用orderdict
    from   collections  import  OrderedDict
    
    d=dict([('a',1),('b',2),('c',3)])
    
    print d
    # {'a': 1, 'c': 3, 'b': 2}    dict的key是无序的
    
    od=OrderedDict([('a',1),('b',2),('c',3)])
    print  od
    # OrderedDict([('a', 1), ('b', 2), ('c', 3)])
    
    #注意,OrderedDict的Key 会按照插入的顺序排列,不是key本身排序:
    od=OrderedDict()
    od['z']=1
    od['y']=2
    od['x']=3
    print  od.keys()
    # ['z', 'y', 'x']
    
    
    #Counter是一个简单的计数器,例如,统计字符出现的个数:
    from  collections  import  Counter
    c=Counter()
    for ch  in 'programming':
        c[ch]=c[ch]+1
    
    print  c
    # Counter({'g': 2, 'm': 2, 'r': 2, 'a': 1, 'i': 1, 'o': 1, 'n': 1, 'p': 1})
    

      

  • 相关阅读:
    Fix Installing .NET Framework 3.5 failed Error Code 0x800F0954 on Windows 10
    RHEL8安装五笔输入法
    Enable EPEL and Local Repository on RHEL8
    Why is Yum Replaced by DNF?
    检查Linux服务器是否被攻击的常用命令及方法
    IDEA 主题
    IDEA 如何显示一个类中所有的方法
    Appium 安装以及安装过程中遇到的问题
    Maven 如何发布 jar 包到 Nexus 私库
    java泛型的基本使用
  • 原文地址:https://www.cnblogs.com/zwgblog/p/7346215.html
Copyright © 2011-2022 走看看