该模块实现一些有用的容器类型
1.deque(双端队列)
实例方法:
d.append(x) 将x添加到d的右端
d.appendleft(x) 将x添加到d的左端
d.clear() 删除d中所有项目
d.extend(iterable) 将iterable的所有项目添加到d的右端
d.extendleft(iterable) 将iterable的所有项目添加到d的左端
d.pop() 返回并删除d右端的项目,如果d为空,则抛出IndexError
d.popleft() 返回并删除d左端的项目,如果d为空,则抛出IndexError
d.remove(item) 删除首次出现的item,如果未找到匹配值,则抛出ValueError
d.rotate(n) 将所有项目向右旋转n步,如果n为负值,则向右旋转
2.nametuple(命名元组)
实例方法:
for example:
>>> from collections import namedtuple
>>> People = namedtuple('silence0607','firstname lastname')
>>> silence0607 = People('tang','peng')
>>> silence0607.firstname
'tang'
>>> silence0607.lastname
'peng'
命名元组相对于元组而言,在访问元素的过程中,我们可以使用属性查找,而在元组中,只能通过index访问。在元素比较多的情况下,很难记住每个index对应的元素代表什么意思。namedtuple也可以用类来代替的:
上面这个例子类似于:
#coding=utf-8
#!/usr/bin/env python
class People():
def __init__(self,firstname,lastname):
self.firstname = firstname
self.lastname = lastname
if __name__ == '__main__':
silence0607 = People('tang','peng')
print('%s %s') % (silence0607.firstname,silence0607.lastname)
二者工作原理基本一致,但是在属性的访问过程中,namedtuple要比class慢两倍!
阅读(3938) | 评论(0) | 转发(0) |