zoukankan      html  css  js  c++  java
  • collection模块

    介绍

    在内置数据类型(dict、list、set、tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter、deque、defaultdict、namedtuple和OrderedDict等。
    
    # 1.namedtuple: 生成可以使用名字来访问元素内容的tuple
    
    # 2.deque: 双端队列,可以快速的从另外一侧追加和推出对象
    
    # 3.Counter: 计数器,主要用来计数
    
    # 4.OrderedDict: 有序字典
    
    # 5.defaultdict: 带有默认值的字典

    namedtuple具名元组

    命名的元组,意味给元组中的每个位置赋予含义,意味着代码可读性更强,namedtuple可以在任何常规元素使用的地方使用,而且它可以通过名称来获取字段信息而不仅仅是通过位置索引
    namedtuple是一个函数,它用来创建一个自定义的tuple对象,并且规定了tuple元素的个数,并可以用属性而不是索引来引用tuple的某个元素
    
    语法
    # tuple对象名 = namedtuple(名称, 属性)  
    第一个参数是字符串类型描述第二个参数属性用于什么
    第二个参数是可迭代对象用于表明要存的元素属性,如果是字符串用空格隔开表明各元素属性
    # 变量名 = tuple对象名(各元素) 元素的个数必须跟namedtuple第二个参数里面的属性数量一致
    
    获取元素的方法:
    # 所有值:直接使用变量名
    # 单个值:变量量名.属性名
    
    # 例子
    from collections import namedtuple
    point = namedtuple('坐标',['x','y','z'])
    point = namedtuple('坐标','x y z')
    p = point(1,2,5)
    print(p)  # 坐标(x=1, y=2, z=5)
    print(p.x)  # 1
    print(p.y)  # 2
    print(p.z)  # 3

    deque双端队列

    使用list存储数据时,按索引访问元素很快,但是插入和删除元素就很慢了,因为list是线性存储,数据量大的时候,插入和删除效率很低。
    
    deque是为了高效实现插入和删除操作的双向列表,适合用于队列和栈
    
    deque除了实现list的append()和pop()外,还支持appendleft()和popleft(),这样就可以非常高效地往头部添加或删除元素
    
    # 例子
    from collections import deque
    q = deque(['a','b','c'])
    q.append(1)
    print(q)  # deque(['a', 'b', 'c', 1])
    q.appendleft(2)
    print(q)  # deque([2, 'a', 'b', 'c', 1])
    q.insert(0,'哈哈哈')  # deque(['哈哈哈', 2, 'a', 'b', 'c', 1])
    # 特殊点:双端队列可以根据索引在任意位置插值
    
    print(q.pop())  # 1
    print(q.popleft())  # 哈哈哈'

    Counter计数器

    counter可以支持方便、快速的计数,例如,
    from collections import *
    
    cnt = Counter()
    wordList = ["a","b","c","c","a","a"]
    for word in wordList:
        cnt[word] += 1
    print(cnt)
    
    #输出
    Counter({'a': 3, 'c': 2, 'b': 1})
  • 相关阅读:
    PhpStorm Terminal 消失
    PhpStorm10.0快捷键大全 PhpStorm10.0常用快捷键和配置
    Laravel 学习笔记之语言包 IDE IDE提示工具 IDE插件笔记
    服务器搭建之php报错---<php5isapi.dll加载失败>
    ios观察者模式和通知中心
    UIScrollView 实践经验
    ios app企业证书发布及升级
    关于数组在遍历过程中修改问题
    UIWebView与JavaScript的交互
    WebViewJavascriptBridge JS与iOS Native Code互调方法
  • 原文地址:https://www.cnblogs.com/george-007/p/11209222.html
Copyright © 2011-2022 走看看