Python中的集合

都动态语言了,效率往往不是首先考虑的,写起来顺手才重要~
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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值