代码…

options.get(something, doThisMostOfTheTime)()

…看起来它应该更快,但它实际上比if … elif … else构造,因为它必须调用一个函数,这可能是一个严重的性能开销在一个紧的循环。

考虑这些例子…

1.py

something = 'something'

for i in xrange(1000000):

if something == 'this':

the_thing = 1

elif something == 'that':

the_thing = 2

elif something == 'there':

the_thing = 3

else:

the_thing = 4

2.py

something = 'something'

options = {'this': 1, 'that': 2, 'there': 3}

for i in xrange(1000000):

the_thing = options.get(something, 4)

3.py

something = 'something'

options = {'this': 1, 'that': 2, 'there': 3}

for i in xrange(1000000):

if something in options:

the_thing = options[something]

else:

the_thing = 4

4.py

from collections import defaultdict

something = 'something'

options = defaultdict(lambda: 4, {'this': 1, 'that': 2, 'there': 3})

for i in xrange(1000000):

the_thing = options[something]

…并记下它们使用的CPU时间量…

1.py: 160ms

2.py: 170ms

3.py: 110ms

4.py: 100ms

…使用用户时间从time(1)。

选项#4确实有额外的内存开销,为每个不同的密钥未命中添加一个新的项目,所以如果你期望无限多个不同的密钥未命中,我会选择#3,这仍然是一个重大的改进原始结构。

python中if elif语句优化_python – 最有效的方式做一个if-elif-elif-else语句当else做的最多?...相关推荐

  1. python中的idle在哪里_python idle 的打开方式

    进入你的python安装目录,比如我的python安装在d盘,你只要进到下面这个文件夹去,D:\Program Files\Python33\Lib\idlelib\idle.bat运行即可. 至于出 ...

  2. python中字典长度可变吗_Python:如何给字典分配一个长度可变的列表值?

    我试图在100个2D numpy数组中定位质心,如下所示:array([[ 0.216, 0.24 , 0.244, ..., 0.679, 0.684, 0.707], [ 0.23 , 0.229 ...

  3. [转载] python中for语句用法_详解Python中for循环的使用_python

    参考链接: 在Python中将else条件语句与for循环一起使用 这篇文章主要介绍了Python中for循环的使用,来自于IBM官方网站技术文档,需要的朋友可以参考下 for 循环 本系列前面 &q ...

  4. python中for语句用法_详解Python中for循环的使用_python

    这篇文章主要介绍了Python中for循环的使用,来自于IBM官方网站技术文档,需要的朋友可以参考下 for 循环 本系列前面 "探索 Python,第 5 部分:用 Python 编程&q ...

  5. python中异或怎么算_python 异或运算的前提_异或运算公式

    Python基础(10)–数字-Python-第七城市 609x288 - 73KB - JPEG Python基础(10)--数字_资讯_突袭网 609x288 - 33KB - JPEG pyth ...

  6. python中的scipy基础知识_python中SciPy是什么?

    python中Numpy常用于计算二维数组计算,而python的另一个库SciPy库与Numpy有着密切的关系,是需要通过Numpy为基础,同时也是通过Numpy数据来操控科学计算.常见的是插值运算. ...

  7. python中area是什么意思_python中none表示什么

    Q1:python里None 表示False吗 通常不这样表达.因为在python里定义find如果不为0和正数就是没有找到.并不一定是-1 一般是这样写if s.find("a" ...

  8. python中的array函数作用_Python中的Array | 数组2(简介和功能)

    相关文章:Python中的数组Array | 1(简介和功能) 以下是更多函数. 1. typecode:此函数返回初始化数组所用的数据类型. 2. itemsize:此函数返回单个数组元素的大小(以 ...

  9. python中的方法是什么_Python方法

    1. 对象 = 属性 + 方法 对象是类的实例.换句话说,类主要定义对象的结构,然后我们以类为模板创建对象.类不但包含方法定义,而且还包含所有实例共享的数据. 封装:信息隐蔽技术 我们可以使用关键字 ...

最新文章

  1. java panel 显示文字,从动态添加的jPanel获取文本
  2. 头文字C的混战何时方能休?论从某语言怎么怎么样到我要怎样怎样的语言
  3. 数据连接java面试题
  4. matlab井深测量,一种井深测量系统及方法与流程
  5. php+apache 和 php+nginx的区别
  6. 随心所欲的DateTime显示格式
  7. 网络协议osi模型_网络协议|OSI模型第二层数据链路层
  8. linux系统清理内存,如何清除linux的内存缓存,缓冲和交换空间
  9. 基于JSP的房屋租赁管理系统
  10. ppt显示无法连接服务器文件路径,ppt打开时显示“此演示文稿包含到其他文件的链接”弹出框是什么原因?...
  11. 必须指定计算机名称,指定网络名不再可用处理方法,指定网络
  12. 基于Labview的串口通信助手,附带免费的exe程序和vi文件(有意见或学习讨论欢迎交流)
  13. HDU 4939 Stupid Tower Defense 简单DP
  14. gb28181协议流媒体实现为rtp荷载ps流,将h264流打包成ps流。
  15. java单例模式(Holder模式美滋滋)
  16. 题目选自《第八届图灵杯》-------买花
  17. 以下对linux中线程描述错误的是,2008年9月全国计算机等级三级PC技术真题
  18. inline函数在IAR中的使用
  19. 校园网免认证上网的方法
  20. ArangoDB——操作案例二

热门文章

  1. Linux如何显示文件数目的技巧比较两个文件夹是否相同
  2. 第四章4.1 4.2 快速傅里叶变换FFT-介绍
  3. 【任务脚本】0530更新淘宝618活动领喵币脚本,OrangeJs基于autojs全自动程序稳定运行,向大神致敬...
  4. eclipse中maven项目红叉解决方案
  5. 谷歌浏览器扩展开发笔记
  6. 【总结整理】《人人都是产品经理》---读后感
  7. 【Connection Events】【BLE】【原创】
  8. 异常:System.BadImageFormatException,未能加载正确的程序集XXX或其某一依赖项
  9. 浏览器检测是否安装flash插件,若没有安装,则弹出安装提示
  10. 基于Linux的socket编程模板