5.7 copy--简单拷贝和深度拷贝对象

在Python里的赋值语句是不拷贝对象的,它只是让目标和对象之间进行绑定。对于一些可变的容器来说,有时需要修改容器的内容,但不影响之前的对象。因此本模块提供了简单拷贝和深度拷贝对象的功能。 copy.copy(x) 返回一个简单拷贝的对象。例子:#python 3.4import copy l = [2, 4]x = copy.copy(l)print(x)结果输出如下:[2, 4] copy.d...
阅读(1620) 评论(0)

5.6 array--高效的数值类型数组

本模块定义高效的数值类型数组,主要包括类型有:字符、整数、浮点数。数值类型数组与列表比较相似,主要区别在于列表可以放入不同类型的元素,而类型数组只能放入一种类型的元素。类型数组只支持下面的类型:类型字符C类型Python类型占用最小的字节备注'b'signed charint1 'B' unsigned charint1 'u'Py_UNICODEUnicode haracter2  'h'sig...
阅读(1744) 评论(0)

5.5 bisect--数组的二分算法

本模块实现已经排序的队列列表插入元素之后保持排序。对于个大量数据的列表来看,插入元素并保持排序,计算量是非常大的。本模块实现了bisect算法,主要基于二分算法来实现。bisect.bisect_left(a, x, lo=0, hi=len(a)) 对有序列表a里插入元素x,保持有序不变,返回插入的位置。参数lo和hi是表示判断列表的范围,默认是整个范围。如果插入的元素x已经在列表a存在,那就插...
阅读(1831) 评论(0)

5.4.1 使用堆算法实现优级队列

一个优先级队列通常是使用堆算法来实现,实现优先级队列主要困难有以下几点:1)排序的稳定性:怎么样实现两个优级一样的任务时返回最先添加的任务?2)在元组比较里,如果(优先级,任务)对相同时,就没有比较的顺序了。3)如果一个任务的优先级改变了,你怎么样把它移动到堆的一个新位置上?4)当任务删除时,你怎么样发现它是删除的,并且把它从堆队列里删除?为了解决前面两个问题,采用三个元素的列表来实现,这个列表包...
阅读(1560) 评论(0)

5.4 heapq--堆队列算法

本模块实现了堆队列算法,也叫作优先级队列算法。堆队列是一棵二叉树,并且拥有这样特点,它的父节点的值小于等于任何它的子节点的值,如果采用数组array实现,可以把它们的关系表示为:heap[k] 和 heap[k] ,对于所有k值都成立,k值从0开始计算。作为比较,可以认为不存的元素是无穷大的。堆队列有一个比较重要的特性,它的最小值的元素就是在根:heap[0]。 下面的API与教科书上堆算法有两点...
阅读(2410) 评论(0)

5.3.7 UserDict对象

用户自定义字典类UserDict,它是封装了一个字典类dict。主要使用来拷贝一个字典的数据,而不是共享同一份数据。class collections.UserDict([initialdata]) 本类主要模拟一个字典。在类成员data里拷贝了一份字典数据,如果没有提供初始数据,就保存为空的方式。UserDict类实例提供下面的属性:data用来保存字典的成员变量。 例子:#python 3.4...
阅读(1171) 评论(0)

5.3.6 OrderedDict对象

有序字典与字典是一样的功能,只不过它保持插入字典的顺序,当需要遍历时会先访问最先插入的项。class collections.OrderedDict([items]) 返回一个新的dict类派生类实例,支持字典的操作方法。例子:#python 3.4import collections d = {'banana': 3, 'apple':4, 'pear': 1, 'orange': 2}od =...
阅读(1692) 评论(0)

5.3.5 namedtuple() 创建命名字段的元组结构

在命名元组里,给每个元组的位置添加一个名称,并且可以通过名称来访问,大大地提高可读性,以便写出清晰代码,提高代码的维护性。其实它就像C++里的结构体。collections.namedtuple(typename, field_names, verbose=False, rename=False) 返回一个新类型名称typenname的元组。参数field_names是一个字串表示的元素名称,每个...
阅读(2237) 评论(1)

5.3.4 defaultdict对象

class collections.defaultdict([default_factory[, ...]]) 返回一个字典类似的对象。defaultdict是一个内置字典类dict的派生类。它主要是重载了一个方法__missing__(key)和增加一个可修改实例变量,它功能和函数跟dict类是一样的。第一个参数default_factory是使用它作为默认值的类型,因为python在没有赋值给...
阅读(1263) 评论(0)

5.3.3.1 deque其它使用方式

在本节里提供了一些关于deque其它使用方式。提供类似UNIX中的命令tail的功能,显示一个文件最后面一段文本:def tail(filename, n=10):    '返回文件最后的n行文本'    with open(filename) as f:        return deque(f, n) 比如使用deque来计算一个移动平均数:def moving_average(iterab...
阅读(1086) 评论(0)
    个人资料
    • 访问:5594057次
    • 积分:73134
    • 等级:
    • 排名:第25名
    • 原创:1587篇
    • 转载:61篇
    • 译文:11篇
    • 评论:2086条
    文章存档
    最新评论