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

    namedtuple 可命名元祖

    from collections import namedtuple
    point = namedtuple('point',['x','y'])
    P = point(1,2)
    print(P.x)
    print(P.y)
    print(P)
    View Code

    queue 队列

    import queue
    a = queue.Queue()#创建一个空队列
    a.put(1)
    a.put(3)
    a.put(4)#输入值
    print(a.get())
    print(a.get())
    print(a.get())#取值,先进先出。与堆栈不同,堆栈先进后出。
    View Code

    对了,注意。在当你get到队列最后一个时,如果还有get就会造成阻塞。此时就会停留在最后一个,知道你put下一个值进去

    我们如果要想要在get超出我们队列值时结束。只需要在后面加一句  队列名.qsise()就行

    import queue
    a = queue.Queue()#创建一个空队列
    a.put(1)
    a.put(3)
    a.put(4)#输入值
    print(a.get())
    print(a.get())
    print(a.get())#取值,先进先出。与堆栈不同,堆栈先进后出。
    print(a.qsize())
    View Code

    我们就可以看到python直接返回0,告诉我们后面已经没有了。

    deque 双端队列

    from collections import deque
    a = deque([5,6])#创建一个双端队列
    a.append('a')#从前面添加[a,5,6]
    a.appendleft('b')#从后添加[a,5,6,b]
    a.insert(2,3)#注意是按索引插入的[a,5,3,6,b]
    a.pop()#从前取值
    a.popleft()#从后取值
        
    View Code

    注意与队列的区别。

    将其打印出来如下。

    缺点:因为可以插入,所以安全性和queue先比要低很多。

    在使用list存储数据时,按索引访问元素很快,但是插入和删除元素就很慢,因为list时线性存储,数据量大的时候,插入和删除的效率都很低。

    Ordereddict 有序字典

    from collections import OrderedDict
    #列如,我们先创建一个字典
    d = dict([('a',6),('b',23),('c',9)])#这个时候key是无序的。
    
    Or = OrderedDict([('a',6),('b',23),('c',9)])#此时字典就变为有序的了。
    #这个时候会我们就可以对它进行遍历。
    print(Or['a'])
    for i in Or:
        print(i)
    View Code

    如果字典很长时,不适合用有序列表。适用于商品价格之内的应用。

    defaultdict  默认字典

    举个栗子:我想要将一个列表中的数分类,分别放在字典的k1,k2键对应的值中。我们可以这样写

    from collections import defaultdict
    values = [11,22,3,66,77,88,999,99999]
    套你大象 = defaultdict(list)#这里可以是任意可调用的数据类型、
    for i in values:
        if i >66:
            套你大象['k1'].append(i)#没有k1就创建一个k1key。
        else:
            套你大象['k2'].append(i)
    View Code

    如果我们是需要返回一个值时,这是是不可要调用的数据。我们要怎样返回呢?

    O(∩_∩)O,这是我们可以定义一个匿名函数,把我们需要返回的值变成lambda的返回值。这是我们就可以调用了。

    counter 计数器

    from collections import Counter
    a = 'sdhfksdhfjsdghfuiwefbhjksd'
    print(Counter(a))

    只能计算字符串

  • 相关阅读:
    7-30-组队赛
    POJ 3125 Printer Queue
    7-28-比赛
    POJ 3922 A simple stone game
    POJ 1845
    第一次组队训练
    I-number
    Radar Installation
    Robots on a grid(DP+bfs())
    Dividing a Chocolate(zoj 2705)
  • 原文地址:https://www.cnblogs.com/zly9527/p/11455893.html
Copyright © 2011-2022 走看看