资讯专栏INFORMATION COLUMN

python 学习笔记 2 collections集合介绍

jifei / 1621人阅读

摘要:在最左侧添加元素弹出左侧的元素和传统的相比,当所选择的不存在时可以返回一个默认值。使用技巧以及注意事项注意的排序是根据输入的的顺序进行排序。是一个简单的计数器可用于统计字符出现个数等。

0.前置说明

1.运行环境:Win7虚拟机、python2.7(anacoda版)

2.本文大部分内容引用此参考文献并极力推荐根据此人博客学习python:http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fa...

1.namedtuple

这个函数的意义在于创建一个容易让人理解的元组数据结构(tuple),

In [1]: from collections import namedtuple

In [2]: name = namedtuple("name",["first","second"])

In [3]: n = name("Mr","ZONT")

In [4]: n.first
Out[4]: "Mr"

In [5]: n.second
Out[5]: "ZONT"

使用技巧以及注意事项

注意namedtuple的第一个参数真的是表示这个结构的name(这个例子举的比较挫),请看以下代码,能更好理解.

In [14]: name = namedtuple("wahaha",["first","second"])
In [15]: name.__name__
Out[15]: "wahaha"

新建的tuple是原来tuple的子类

In [18]: n = name("Mr","ZONT")
In [19]: isinstance(n,name)
Out[19]: True
In [20]: isinstance(n,tuple)
Out[20]: True

deque

dequelist的进化版,可以在两头添加和删除元素,适合用于队列和栈。

In [21]: from collections import deque
In [22]: d = deque(["r", "Z", "O"])
In [24]: d.append("N")
In [25]: d.appendleft("M") #在最左侧添加元素
In [26]: d
Out[26]: deque(["M", "r", "Z", "O", "N"])
In [27]: d.append("T")
In [28]: d
Out[28]: deque(["M", "r", "Z", "O", "N", "T"])
In [29]: d.pop()
Out[29]: "T"
In [30]: d
Out[30]: deque(["M", "r", "Z", "O", "N"])
In [31]: d.popleft() #弹出左侧的元素
Out[31]: "M"
In [32]: d
Out[32]: deque(["r", "Z", "O", "N"])
defaultdict

和传统的dict相比,当所选择的key不存在时,可以返回一个默认值。

In [33]: from collections import defaultdict
In [35]: d = defaultdict(lambda:"NOKEY")
In [36]: d["k"] = 1
In [37]: d["k"]
Out[37]: 1
In [38]: d["d"]
Out[38]: "NOKEY"
使用技巧以及注意事项

注意defaultdict里面的参数必须是以函数形式传入的,除了用上文的匿名函数还可以用普通函数,如:

In [39]: def test():
   ....:     return "hello"
   ....:
In [41]: d = defaultdict(test)
In [43]: d["l"]
Out[43]: "hello"
OrderedDict

OrderedDict比传统的dict的优越性在于,其key是有顺序的。

In [49]: o = OrderedDict([("100",0),("10",5),("X","Z")])
In [51]: o.keys()
Out[51]: ["100", "10", "X"]
使用技巧以及注意事项

注意OrderedDict的排序是根据输入的key的顺序进行排序。

Counter

Counter是一个简单的计数器,可用于统计字符出现个数等。

In [52]: from collections import Counter
In [54]: c = Counter("sdugvikbvqerhasasdasds")
In [55]: c["a"]
Out[55]: 3
In [56]: c["d"]
Out[56]: 3
In [57]: c["s"]
Out[57]: 5

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/37586.html

相关文章

  • 流畅的python读书笔记-第三章Python 字典与集合

    摘要:小总结标准库里的所有映射类型都是利用来实现只有可散列的数据类型才能用作这些映射里的键值不用字典推导用处理找不到的键找不到键返回某种默认值底层是与调用实现的字典插入更新原理其他大多数映射类型都提供了两个很强大的方法和。 字典和集合 标准库里的所有映射类型都是利用 dict 来实现的只有可散列的数据类型才能用作这些映射里的键(值不用) 可散列 一个对象是可散列的 它的散列值是不变的 对象...

    lvzishen 评论0 收藏0
  • [学习笔记-Java集合-12] Set - CopyOnWriteArraySet源码分析

    摘要:介绍底层是使用存储元素的,所以它并不是使用来存储元素的。最简单的方式就是判断是否中的元素都在中,中的元素是否都在中,也就是两次两层循环。其实,并不需要。标记某个元素是否找到过,防止重复这个位置没找到过才比较大小 介绍 CopyOnWriteArraySet底层是使用CopyOnWriteArrayList存储元素的,所以它并不是使用Map来存储元素的。 但是,我们知道CopyOnWri...

    Lin_YT 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<