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实现图书超期提醒
Aug 02 Python
Python 转义字符详细介绍
Mar 21 Python
Odoo中如何生成唯一不重复的序列号详解
Feb 10 Python
python的dataframe和matrix的互换方法
Apr 11 Python
python判断输入日期为第几天的实例
Nov 13 Python
python 通过SSHTunnelForwarder隧道连接redis的方法
Feb 19 Python
pyinstaller打包单个exe后无法执行错误的解决方法
Jun 21 Python
python使用装饰器作日志处理的方法
Jul 11 Python
python实现键盘输入的实操方法
Jul 16 Python
PyCharm搭建Spark开发环境的实现步骤
Sep 05 Python
Python箱型图处理离群点的例子
Dec 09 Python
pandas抽取行列数据的几种方法
Dec 13 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
JavaScript 克隆数组最简单的方法
2009/02/12 Javascript
Js如何判断客户端是PC还是手持设备简单分析
2012/11/22 Javascript
JavaScript中“+”的陷阱深刻理解
2012/12/04 Javascript
解析prototype,JQuery中跳出each循环的方法
2013/12/12 Javascript
jquery代码实现多选、不同分享功能
2015/07/31 Javascript
js实现仿MSN带关闭功能的右下角弹窗代码
2015/09/04 Javascript
浅析Node.js 中 Stream API 的使用
2015/10/23 Javascript
全面解析DOM操作和jQuery实现选项移动操作代码分享
2016/06/07 Javascript
jQuery bt气泡实现悬停显示及移开隐藏功能的方法
2016/07/12 Javascript
js实现图片切换(动画版)
2016/12/25 Javascript
js实现表格筛选功能
2017/01/18 Javascript
浅谈Javascript事件对象
2017/02/05 Javascript
Angular客户端请求Rest服务跨域问题的解决方法
2017/09/19 Javascript
vue.js默认路由不加载linkActiveClass问题的解决方法
2017/12/11 Javascript
vuejs前后端数据交互之从后端请求数据的实例
2018/08/11 Javascript
微信小程序适配iphoneX的实现方法
2018/09/18 Javascript
Python最基本的数据类型以及对元组的介绍
2015/04/14 Python
Python循环语句中else的用法总结
2016/09/11 Python
Python迭代和迭代器详解
2016/11/10 Python
浅谈python for循环的巧妙运用(迭代、列表生成式)
2017/09/26 Python
深入理解Django的自定义过滤器
2017/10/17 Python
Python用 KNN 进行验证码识别的实现方法
2018/02/06 Python
python函数式编程学习之yield表达式形式详解
2018/03/25 Python
Python实现求解括号匹配问题的方法
2018/04/17 Python
使用python对文件中的单词进行提取的方法示例
2018/12/21 Python
Django时区详解
2019/07/24 Python
使用Python爬虫爬取小红书完完整整的全过程
2021/01/19 Python
CSS3 选择器 伪类选择器介绍
2012/01/21 HTML / CSS
美国领先的汽车轮胎和轮毂供应商:TireBuyer
2016/07/21 全球购物
数学系个人求职信范文
2014/01/30 职场文书
培训楼经理岗位责任制
2014/02/10 职场文书
勤俭节约演讲稿
2014/05/08 职场文书
罚站检讨书
2015/01/29 职场文书
导游词之晋城蟒河
2019/12/12 职场文书
python常见的占位符总结及用法
2021/07/02 Python
详解Vue slot插槽
2021/11/20 Vue.js