1.有名字的元组——namedtuple

>>> from collections import namedtuple
>>> Point = namedtuple('Point', ['x', 'y'])
>>> p = Point(1, 2)
>>> p.x
1
>>> p.y
2
Circle = namedtuple('Circle', ['x', 'y', 'r'])

2.双向链表——deque

list访问数据很快,但增删就比较慢,因为list是线性存储,deque是为了高效实现插入和删除操作的双向列表,适合用于队列和栈

>>> from collections import deque
>>> q = deque(['a', 'b', 'c'])
>>> q.append('x')
>>> q.appendleft('y')
>>> q
deque(['y', 'a', 'b', 'c', 'x'])

deque除了实现list的append()pop()外,还支持appendleft()popleft(),这样就可以非常高效地往头部添加或删除元素。

3.有序的字典——OrderedDict

>>> od = OrderedDict()
>>> od['z'] = 1
>>> od['y'] = 2
>>> od['x'] = 3
>>> od.keys() # 按照插入的Key的顺序返回
['z', 'y', 'x']

4.频数计算器——Counter

有时候经常要统计某个字符在字符串中出现的频率,或者某个数字在list中出现的频率,这个时候如果不想用pandas,Counter就能派上用场了。

>>> from collections import Counter
>>> c = Counter()
>>> for ch in 'programming':
... c[ch] = c[ch] + 1
...
>>> c
Counter({'g': 2, 'm': 2, 'r': 2, 'a': 1, 'i': 1, 'o': 1, 'n': 1, 'p': 1})
>>> a=[1,2,2,2,3,3,4]
>>> from collections import Counter
>>> c=Counter()
>>> for item in a:
... c[str(item)]=c[str(item)]+1
...
>>> c
Counter({'': 3, '': 2, '': 1, '': 1})

本文转自廖雪峰老师的python教程

最新文章

  1. iOS--UILable自适应大小
  2. js中join函数的使用方法(js输出html标签)
  3. C语言的数据类型及其对应变量
  4. electronic data interchange 电子数据交换
  5. (并查集 or BFS+二分)HDU5652
  6. Linq 合并数据并相加
  7. help python(查看模块帮助文档)
  8. Entity Framewor 学习笔记 (Enum)
  9. Eclipse提交任务至Hadoop集群遇到的问题
  10. jQuery 添加 删除 改动select option
  11. maven 项目 pom.xml文件中配置的jar包下载报错
  12. unix网络编程环境搭建
  13. socketpair创建双向通信的管道(全双工通信)
  14. python3全栈开发-异常处理
  15. 异常--finally关键字
  16. border——边框属性
  17. Eclipse中创建一个新的SpringBoot项目
  18. lcn 分布式事务协调者集群原理
  19. Github介绍
  20. CSU 2005 Nearest Maintenance Point(最短路+bitset)

热门文章

  1. HTML5 的成长之路
  2. yii2.0获取最后一条ID
  3. UWP 扩展/自定义标题栏的方法,一些概念和一些注意事项
  4. WPF公章制作之2
  5. android4.4系统解决“ERRORcouldn't find native method”方法
  6. Leetcode 169 Majority Element 分治
  7. WPF中StringFormat的用法
  8. Android Ant 和 Gradle 包装工艺和效率控制
  9. Angular基本概念理解
  10. SICP 1.17-1.19