您的位置:首页 > 编程语言 > Python开发

Python中的集合

2009-10-10 12:10 309 查看
都动态语言了,效率往往不是首先考虑的,写起来顺手才重要~
Python和Javascript都是俺很欣赏的语言,可以像C一样结构化的写,也可以OO,真正的“所有都是对象”,真正的动态类型,函数是一等公民带来很多C系语言想都不会想的效果。。

Python的常用集合就三个:listtupledict。虽然它数据类型还是挺多的。
剩下有defaultdictdequearrayheapqueueset等。SciPy里面还可以像Matlab一样搞matrix。

list在Python里面无处不在,照源码看list是一个PyObject*的动态数组。
而且"The growth pattern is: 0, 4, 8, 16, 25, 35, 46, 58, 72, 88, ..." 好小气。很多语言都是原长度的1点几到2倍的增长。
除了数组那些功能,list还有pop、push、sort、reverse等方法。

tuple和list的区别就是创建好就不能改大小,需要的时候效率高点,其他没什么区别。
dict名字比较明显了,哈希表。类似的,每个Python对象都有__hash__(),__eq()__和__cmp__可以自己写。

collections这个模块里面到2.5暂时有两个东东:defaultdict,作用就是当要找的key不在的时候返回一个用户定义的缺省值。
deque,链表实现的双端队列。
heapq其实不是一个类,而是一组在list上做堆算法的函数,本来很多堆就是在数组上实现的。
array是专门高效存储"uniformly typed numeric values"的,比如int、char、double的。
sets不用说了,里面还有个frozenset也是不能改的。
weakref这个模块里面有WeakKeyDictionary、WeakValueDictionary。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: