zoukankan      html  css  js  c++  java
  • python全栈闯关--19-python常用模块collections(命名空间、队列、双端队列、有序字典、defaultdict)

    1、namedtuple

    定义一个namedtuple:

    namedtuple('数据类型名', [属性列表])

    from collections import namedtuple
    
    Point = namedtuple('point', ['x', 'y', 'z'])
    p1 = Point(1, 2, 3)
    p2 = Point(3, 2, 1)
    print(p1.x)
    print(p1.y)
    print(p1.z)
    
    print(p1)
    print(p2)
    
    card = namedtuple('card', ['suits', 'number'])
    c1 = card('黑桃', 2)
    print(c1)
    print(c1.number)
    print((c1.suits))

    2、队列

    2.1 队列

    import queue
    q = queue.Queue()  # 可以指定队列最大长度
    for x in range(30):
        q.put(x)
    
    print(q.get()) #当没有值得时候,阻塞等待
    print(q.qsize())
    print(q.get()) #当没有值得时候,阻塞等待
    print(q.qsize())
    print(q.get()) #当没有值得时候,阻塞等待
    print(q.qsize())
    print(q.get()) #当没有值得时候,阻塞等待
    print(q.qsize())

    队列调用Queue时,可以指定最大长度,超过最大长度,不报错,但是队列也使用不了

    q.get()获取值,获取队列中的值,无值时阻塞等待

    q.put()向队列中推送值

    q.qsize()获取队列的长度

    2.2 双端队列

    from collections import deque
    
    q = deque([1,2])
    print(q)
    q.append('a')
    q.append('b')
    print(q)
    q.insert(3,'c')
    print(q)
    print(q.pop())
    print(q)
    print(q.popleft())
    print(q)

    q.append('a')最末尾追加元素

    q.insert(3,'c') 在索引3的位置插入c,索引从0开始

    q.pop 删除对尾撒上的值,并返回

    q.popoleft 删除对头的值,并返回

    3、有序字典

    from collections import OrderedDict
    import random
    od = OrderedDict([('a',1),('b',2),('c',3)])
    print(od)

    有序字典的键值是固定顺序的

    4、defaultdict

    from collections import defaultdict
    # 设置默认值为列表[]
    d = defaultdict(list)
    print(d['k'])
    
    # 设置默认值为5
    d = defaultdict(lambda :5)
    # 键值不存在返回5
    print(d['k'])
  • 相关阅读:
    触屏版轻量级分页插件jqPagination分享
    30行js让你的rem弹性布局适配所有分辨率(含竖屏适配)
    js适配根字体大小
    返回顶部
    44 | 套路篇:网络性能优化的几个思路(下)
    43 | 套路篇:网络性能优化的几个思路(上)
    42 | 案例篇:如何优化 NAT 性能?(下)
    41 | 案例篇:如何优化 NAT 性能?(上)
    40 | 案例篇:网络请求延迟变大了,我该怎么办?
    python排列组合之itertools模块
  • 原文地址:https://www.cnblogs.com/zxw-xxcsl/p/12605994.html
Copyright © 2011-2022 走看看