python 字典item与iteritems的区别详解


Posted in Python onApril 25, 2020

综述迭代器

对于原生支持随机访问的数据结构(如tuple、list),迭代器和经典for循环的索引访问相比并无优势,反而丢失了索引值(可以使用内建函数enumerate()找回这个索引值)。但对于无法随机访问的数据结构(比如set)而言,迭代器是唯一的访问元素的方式。

另外,迭代器的一大优点是不要求事先准备好整个迭代过程中所有的元素。迭代器仅仅在迭代到某个元素时才计算该元素,而在这之前或之后,元素可以不存在或者被销毁。这个特点使得它特别适合用于遍历一些巨大的或是无限的集合,比如几个G的文件,或是斐波那契数列等等。

迭代器更大的功劳是提供了一个统一的访问集合的接口,只要定义了iter()方法对象,就可以使用迭代器访问。

例如:

List = [1,2,3]
L = List.__iter__()
>>> L.next()
1
>>> L.next()
2
>>> L.next()
3

为什么使用迭代器

for i in range(1000): pass
for i in xrange(1000): pass

前一个返回1000个元素的列表,而后一个在每次迭代中返回一个元素,因此可以使用迭代器来解决复用可占空间的问题

class Fab(object): 
 def __init__(self, max): 
 self.max = max
 self.n, self.a, self.b = 0, 0, 1

 def __iter__(self): 
 return self

 def next(self): 
 if self.n < self.max: 
  r = self.b 
  self.a, self.b = self.b, self.a + self.b 
  self.n = self.n + 1
  return r 
 raise StopIteration()

Fab 类通过 next() 不断返回数列的下一个数,内存占用始终为常数 

示例代码2

def fab(max):
 n, a, b = 0, 0, 1
 while n < max:
 yield b
 a, b = b, a + b
 n = n = 1

简单地讲,yield 的作用就是把一个函数变成一个 generator,带有 yield 的函数不再是一个普通函数,Python 解释器会将其视为一个 generator,调用 fab(5) 不会执行 fab 函数,而是返回一个 iterable 对象!

在 for 循环执行时,每次循环都会执行 fab 函数内部的代码,执行到 yield b 时,fab 函数就返回一个迭代值,下次迭代时,代码从 yield b 的下一条语句继续执行,而函数的本地变量看起来和上次中断执行前是完全一样的,于是函数继续执行,直到再次遇到 yield。

看起来就好像一个函数在正常执行的过程中被 yield 中断了数次,每次中断都会通过 yield 返回当前的迭代值。

以上这篇python 字典item与iteritems的区别详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python连接oracle数据库实例
Oct 17 Python
Python中__name__的使用实例
Apr 14 Python
python 写入csv乱码问题解决方法
Oct 23 Python
Python爬虫:通过关键字爬取百度图片
Feb 17 Python
python实现对excel进行数据剔除操作实例
Dec 07 Python
python添加模块搜索路径和包的导入方法
Jan 19 Python
Python之修改图片像素值的方法
Jul 03 Python
Python3并发写文件与Python对比
Nov 20 Python
python类中super() 的使用解析
Dec 19 Python
python调用有道智云API实现文件批量翻译
Oct 10 Python
pymongo insert_many 批量插入的实例
Dec 05 Python
Django中使用Celery的方法步骤
Dec 07 Python
解决reload(sys)后print失效的问题
Apr 25 #Python
Jupyter Notebook 实现正常显示中文和负号
Apr 24 #Python
500行python代码实现飞机大战
Apr 24 #Python
matplotlib jupyter notebook 图像可视化 plt show操作
Apr 24 #Python
Python3实现飞机大战游戏
Apr 24 #Python
python实现飞船游戏的纵向移动
Apr 24 #Python
python实现俄罗斯方块小游戏
Apr 24 #Python
You might like
DOM XPATH获取img src值的query
2013/09/23 PHP
php图片添加文字水印实现代码
2016/03/15 PHP
PHP读取大文件的多种方法介绍
2016/04/04 PHP
phpStorm+XDebug+chrome 配置详解
2019/04/01 PHP
PHP数组Key强制类型转换实现原理解析
2020/09/01 PHP
contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
2011/09/13 Javascript
jQuery.extend 函数详解
2012/02/03 Javascript
JavaScript常用脚本汇总(一)
2015/03/04 Javascript
js实现点击获取验证码倒计时效果
2021/01/28 Javascript
JS实现的在线调色板实例(附demo源码下载)
2016/03/01 Javascript
Bootstrap弹出带合法性检查的登录框实例代码【推荐】
2016/06/23 Javascript
JavaScript蒙板(model)功能的简单实现代码
2016/08/04 Javascript
Vue.js 2.0窥探之Virtual DOM到底是什么?
2017/02/10 Javascript
关于JavaScript中的this指向问题总结篇
2017/07/23 Javascript
浅析JavaScript中的平稳退化(graceful degradation)
2017/07/24 Javascript
JavaScript设计模式之代理模式简单实例教程
2018/07/03 Javascript
关于vue v-for循环解决img标签的src动态绑定问题
2018/09/18 Javascript
ztree加载完成后显示勾选节点的实现代码
2018/10/22 Javascript
通过实例学习React中事件节流防抖
2019/06/17 Javascript
优雅的使用javascript递归画一棵结构树示例代码
2019/09/22 Javascript
layui table单元格事件修改值的方法
2019/09/24 Javascript
[03:18]【TI9纪实】社区大触GL与木木
2019/08/25 DOTA
JS设计模式之责任链模式实例详解
2018/02/03 Python
Python程序运行原理图文解析
2018/02/10 Python
神经网络(BP)算法Python实现及应用
2018/04/16 Python
pygame库实现俄罗斯方块小游戏
2019/10/29 Python
Python 抓取数据存储到Redis中的操作
2020/07/16 Python
Otticanet意大利:最顶尖的世界名牌眼镜, 能得到打折季的价格
2019/03/10 全球购物
Vertbaudet西班牙网上商店:婴儿服装、童装、母婴用品和儿童家具
2019/10/16 全球购物
乐观大学生的自我评价
2014/01/10 职场文书
小学生节约用水倡议书
2014/05/15 职场文书
党的群众路线教育实践活动总结材料
2014/10/30 职场文书
建立共青团委员会的请示
2019/04/02 职场文书
处世之道:关于真诚相待的名言推荐
2019/12/02 职场文书
MongoDB日志切割的三种方式总结
2021/09/15 MongoDB
悬疑名作《朋友游戏》动画无字ED宣传片 新角色公开
2022/04/13 日漫