# -*- 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
#更多说明
"""
降低复杂度的工作可以通过用算法能很好的地处理高效的数据结构来存储数据实现,也就是说,当解决方法不明显时,应该考虑放弃并且重写出现问题部分,而不是为了性能
而破坏代码的可读性!
"""

最新文章

  1. 关于shape_trans (ConnectedRegions, ConvexRegions, 'convex')的作用于对比
  2. 百度编辑器 UEditor 报错汇总
  3. 在python3.5中使用pip
  4. U盘启动
  5. NET开发必备工具之-LINQPad
  6. MvvmCross for WPF File Plugin
  7. MySQL追加注释或者大量修改注释
  8. 在Raspberry配置优化安装LNMP环境总结
  9. AVL树相关操作
  10. Java如何实现对Mysql数据库的行锁
  11. jsp 中对jar 包的引用
  12. 转 InnoDB Error Handling
  13. Http请求报头设置
  14. centos7通过yum安装JDK1.8
  15. Ubuntu轻松编译openJDK
  16. Windos上生成密钥,以及添加到GIT
  17. js地址多选实现,居住地,户口,职业,行业多选1
  18. 微信小程序 setData 的坑(转)
  19. UIKit框架之NSObject
  20. Aop学习笔记

热门文章

  1. MFC原创:三层架构01(人事管理系统)DAL
  2. NYOJ 16 矩形嵌套(动态规划)
  3. js身份证验证代码
  4. RPM包查询
  5. SVN服务器的本地搭建和使用
  6. canvas--画宇宙
  7. JavaScript中函数参数的按值传递与按引用传递(即按地址传递)
  8. C# 无边框窗体移动代码
  9. document.documentElement和document.body区别
  10. EasyUI中使用Uploadity问题