这取决于您使用的是哪个版本的Python.在Python 2中,some_dict.items()创建一个新列表,这会占用一些额外的时间并占用额外的内存.另一方面,一旦创建了列表,它就是一个列表,因此在列表创建的开销完成后应具有相同的性能特征.

在Python 3中,some_dict.items()创建了一个视图对象而不是列表,我预计创建和迭代items()会比在Python 2中更快,因为没有必要复制.但是我也期望迭代已经创建的视图比在已经创建的列表上迭代要慢一点,因为字典数据的存储有点稀疏,我相信python没有好办法避免迭代每个bin.字典 – 甚至是空字典.

在Python 2中,一些时间证实了我的直觉:

>>> some_dict = dict(zip(xrange(1000), reversed(xrange(1000))))

>>> some_list = zip(xrange(1000), xrange(1000))

>>> %timeit for t in some_list: t

10000 loops, best of 3: 25.6 us per loop

>>> %timeit for t in some_dict.items(): t

10000 loops, best of 3: 57.3 us per loop

对项目进行迭代的速度大约是其两倍.使用iteritems要快一点……

>>> %timeit for t in some_dict.iteritems(): t

10000 loops, best of 3: 41.3 us per loop

但迭代列表本身与迭代任何其他列表基本相同:

>>> some_dict_list = some_dict.items()

>>> %timeit for t in some_dict_list: t

10000 loops, best of 3: 26.1 us per loop

Python 3可以比Python 2更快地创建和迭代项目(与上面的57.3我们相比):

>>> some_dict = dict(zip(range(1000), reversed(range(1000))))

>>> %timeit for t in some_dict.items(): t

10000 loops, best of 3: 33.4 us per loop

但创建视图的时间是可以忽略不计的;迭代实际上比列表慢.

>>> some_list = list(zip(range(1000), reversed(range(1000))))

>>> some_dict_view = some_dict.items()

>>> %timeit for t in some_list: t

10000 loops, best of 3: 18.6 us per loop

>>> %timeit for t in some_dict_view: t

10000 loops, best of 3: 33.3 us per loop

这意味着在Python 3中,如果要对字典中的项进行多次迭代,并且性能至关重要,则可以通过将视图缓存为列表来获得30%的加速.

>>> some_list = list(some_dict_view)

>>> %timeit for t in some_list: t

100000 loops, best of 3: 18.6 us per loop

python最新版本 效率_Python:迭代列表与dict项目效率相关推荐

  1. 【开发环境】Mac 中安装 Python3 最新版本 ( 下载 Python 最新版本 | 安装 Python3 | 验证 Python3 )

    文章目录 一.下载 Python 最新版本 二.安装 Python3 三.验证 Python3 一.下载 Python 最新版本 下载 最新 Python 版本 ; 进入 Python 主页 http ...

  2. python最新版本是多少(python最新版)

    python所有版本发布时间? Python的所有版本发布时间如下: Python3.3.2发布于2013年5月15日. Python3.2.5发布于2013年5月15日. Python3.1.5发布 ...

  3. 如何下载python3.6版本-python最新版本免费下载-python 3.6.3正式版下载__飞翔下载

    python 3.6.3正式版是最新版本的python语言解释器,修复了部分BUG,增加库的支持,需要的用户赶快来下载吧. 更新内容 Python 3.6.3 发布了.Python 3.6.3 是 2 ...

  4. python常用关键字意思_Python 关键字列表及示例

    本教程提供有关Python中使用的所有关键字的简要信息. 关键字是Python中的保留字.我们不能将关键字用作变量名,函数名或任何其他标识符. 这是Python编程中所有关键字的列表 上述关键字可能会 ...

  5. python 最新版本(V3.8.8_32bit)安装教程

    文档声明: 以下资料均属于本人在学习过程中产出的学习笔记,如果错误或者遗漏之处,请多多指正.并且该文档在后期会随着学习的深入不断补充完善.感谢各位的参考查看. 笔记资料仅供学习交流使用,转载请标明出处 ...

  6. python中文版下载安装教程,python最新版本安装教程

    python下载安装教程 python下载安装教程:自定义安装目录,点击install进行安装,打开cmd窗口,输入python,显示python的版本,安装成功. Python语言更适合初学者,Py ...

  7. python苹果版本下载_python for mac 2.7 下载

    python for mac 2.7 是一种即译式的,互动的,面向对象的编程语言,它包含了模组式的操作,异常处理,动态资料形态,十分高层次的动态资料结构,以及类别的使用.如果因为网络原因,去 Pyth ...

  8. 目前python最新版本是什么,目前使用的python版本是

    python用哪个版本好呢 可以使用python3.9的版本.Python 提供了高效的高级数据结构,以及简单有效的面向对象编程. Python 语法和动态类型,以及解释型语言的性质,使其成为在大多数 ...

  9. python两两组合_python – 一个列表中的两个组合列表

    我是一个Python初学者.我想从一个列表中获取两个组合列表. 例如,我有一个列表: c = [1, 2, 3, 4] 我想使用每四个项目来获得每个可能的组合来填充两个列表.将会有((2 ^ 4)/ ...

最新文章

  1. 【java】暑期需要复习的操作
  2. Zoom 袁征码农逆袭:8 次申请美国签证被拒,独闯硅谷成亿万富翁
  3. mbed列--基于飞思卡尔FRDM KL25Z鼠标设计的高速实现
  4. UNIQUE和PRIMARY 约束的区别
  5. C++确定对象被使用前已先被初始化
  6. Android Github 资源目录
  7. SCF: 简单配置门面
  8. 模糊理论在机器人传感器中的应用_智能家电中的传感器应用大全
  9. 用好这个数据分析工具,BI平台建设少费一半力
  10. 【java】深入了解JAVA可变长度的参数
  11. 两台计算机通过路由器连接网络,如何设置将两台计算机连接到Internet的路由器...
  12. python svm向量_支持向量机(SVM)及其Python实现
  13. cocos tiledmap无法显示 不显示 无法加载
  14. stm32mp1 Cortex M4开发篇6:TIM定时器中断
  15. javaweb网上人才招聘系统的设计与实现
  16. Java数组 排序算法和常见异常
  17. ODB for mysql
  18. 等差乘等比数列求和公式
  19. 足球foteball英文
  20. 了解App启动时间测试方法

热门文章

  1. 如何使用TVM Pass Relay
  2. 自定义Kubernetes调度程序来编排高可用性应用程序
  3. 参数服务器训练基本理论
  4. android 三级界面返回直接到一级界面
  5. Intel HAXM is required to run this AVD VT-x is disabled in BIOS的处理方法
  6. mysql在linux下的安装
  7. c语言连接数据库例子,c语言操作mysql数据库小例子_互帮互助(C language MySQL database operation example _ mutual help).doc...
  8. BZOJ1202: [HNOI2005]狡猾的商人
  9. Newtonsoft.Json文件错误
  10. 上交三月月赛[SJTU] 1106 sudoku