# -*- coding: utf-8 -*-
__author__ = 'Administrator'
import bisect
#排序说明:http://en.wikipedia.org/wiki/insertion_sort
#简化一些操作
#1:删减外部调用,降低工作负载
"""
说明:程序复杂度的另一部分是调用其他函数,方法和类所引入的,一般来说,应该尽量将代码放在循环之外,对于嵌套的循环
这点更加重要,不要在一个循环中反复计算可以在循环开始之前计算数值,内循环应该保持简洁.
"""
#2:deque还提供了append 和pop方法,在序列的两端都能以相同的速度执行
#例子2:如下:
from collections import defaultdict,namedtuple
import profile,stat
import sys
s=[('a',1),('b',2),('c',3)]
@profile('defaultdict')
def faster():
d=defaultdict(list)
for k,v in s:
d[k].append(v)
@profile('dict')
def slower():
d={}
for k,v in s:
d.setdefault(k,[]).append(v)
print slower(),faster()
print stat['dict']
print stat['defaultdict']
lg=defaultdict(long)
print lg['one']
cus=namedtuple('curs','firsname')
c=cus(u'apped',u'zifoe')
print c.firsname
#更多说明
"""
降低复杂度的工作可以通过用算法能很好的地处理高效的数据结构来存储数据实现,也就是说,当解决方法不明显时,应该考虑放弃并且重写出现问题部分,而不是为了性能
而破坏代码的可读性!
"""