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))

只能计算字符串

 

posted @ 2019-09-03 22:55  套你大象  阅读(131)  评论(0编辑  收藏  举报