python:学习defaultdict,namedtuple
# -*- 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
#更多说明
"""
降低复杂度的工作可以通过用算法能很好的地处理高效的数据结构来存储数据实现,也就是说,当解决方法不明显时,应该考虑放弃并且重写出现问题部分,而不是为了性能
而破坏代码的可读性!
"""
最新文章
- 关于shape_trans (ConnectedRegions, ConvexRegions, 'convex')的作用于对比
- 百度编辑器 UEditor 报错汇总
- 在python3.5中使用pip
- U盘启动
- NET开发必备工具之-LINQPad
- MvvmCross for WPF File Plugin
- MySQL追加注释或者大量修改注释
- 在Raspberry配置优化安装LNMP环境总结
- AVL树相关操作
- Java如何实现对Mysql数据库的行锁
- jsp 中对jar 包的引用
- 转 InnoDB Error Handling
- Http请求报头设置
- centos7通过yum安装JDK1.8
- Ubuntu轻松编译openJDK
- Windos上生成密钥,以及添加到GIT
- js地址多选实现,居住地,户口,职业,行业多选1
- 微信小程序 setData 的坑(转)
- UIKit框架之NSObject
- Aop学习笔记