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
deque
是list
的进化版,可以在两头添加和删除元素,适合用于队列和栈。
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
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。