# -*- coding: utf-8 -*-
__author__ = 'Administrator'
import bisect
#排序说明:http://en.wikipedia.org/wiki/insertion_sort
#简化一些操作
#1:删减外部调用,降低工作负载
"""
说明:程序复杂度的另一部分是调用其他函数,方法和类所引入的,一般来说,应该尽量将代码放在循环之外,对于嵌套的循环
这点更加重要,不要在一个循环中反复计算可以在循环开始之前计算数值,内循环应该保持简洁.
"""
#2:使用集合
"""
集合模块担任 了一种内建类型之外的替代品
1:deque 带有附加功能的一种类似于列表类型
2:defaultdict 具有内建默认工厂特性类似于dict类型
3:namedtuple 为成员分配键值的一种类似于元组类型
"""
#deque:是列表的替代实现,列表 是基于数组的,deque是基于双链表的,所以,当需要在中间或者表头插入新元素时,deque速度 要比list快
#但当需要访问随意索引值时,比list慢
#例子1:删除指定位置 2个元素
import profile,stat
from collections import deque
my_list=range(100000)
my_deque=deque(range(100000))
@profile('by_list')
def by_list():
my_list[500:502]=[]
@profile('by_deque')
def by_deque():
my_deque.rotate(500)
my_deque.pop()
my_deque.pop()
my_deque.rotate(-500)
print by_list();by_deque()
print stat['by_list']
print stat['by_deque']