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中使用pyhook实现键盘监控的例子
Jul 18 Python
python求crc32值的方法
Oct 05 Python
Python使用百度API上传文件到百度网盘代码分享
Nov 08 Python
python制作爬虫爬取京东商品评论教程
Dec 16 Python
Python实现爬取需要登录的网站完整示例
Aug 19 Python
Python使用sklearn实现的各种回归算法示例
Jul 04 Python
Python 异步协程函数原理及实例详解
Nov 13 Python
python3实现网页版raspberry pi(树莓派)小车控制
Feb 12 Python
浅谈Pytorch中的自动求导函数backward()所需参数的含义
Feb 29 Python
python中判断文件结束符的具体方法
Aug 04 Python
详解python爬取弹幕与数据分析
Nov 14 Python
利用python实时刷新基金估值(摸鱼小工具)
Sep 15 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
PHP 分页类(模仿google)-面试题目解答
2009/09/13 PHP
php中Socket创建与监听实现方法
2015/01/05 PHP
php简单实现数组分页的方法
2016/04/30 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
2020/02/27 PHP
如何用javascript判断录入的日期是否合法
2007/01/08 Javascript
网页中实现浏览器的最大,最小化和关闭按钮
2007/03/12 Javascript
情人节之礼 js项链效果
2012/02/13 Javascript
JQuery获取样式中的background-color颜色值的问题
2013/08/20 Javascript
JS实现多物体缓冲运动实例代码
2013/11/29 Javascript
使用typeof方法判断undefined类型
2014/09/09 Javascript
《JavaScript DOM 编程艺术》读书笔记之DOM基础
2015/01/09 Javascript
jQuery通过控制节点实现仅在前台通过get方法完成参数传递
2015/02/02 Javascript
JS实现自动切换文字的导航效果代码
2015/08/27 Javascript
jQuery插件FusionCharts绘制2D环饼图效果示例【附demo源码】
2017/04/10 jQuery
vue中使用cookies和crypto-js实现记住密码和加密的方法
2018/10/18 Javascript
详解vue中使用微信jssdk
2019/04/19 Javascript
微信小程序 弹窗输入组件的实现解析
2019/08/12 Javascript
vue-cli创建的项目中的gitHooks原理解析
2020/02/14 Javascript
js canvas实现俄罗斯方块
2020/10/11 Javascript
python中执行shell的两种方法总结
2017/01/10 Python
python的多重继承的理解
2017/08/06 Python
Python 获取项目根路径的代码
2019/09/27 Python
为什么说python适合写爬虫
2020/06/11 Python
python制作一个简单的gui 数据库查询界面
2020/11/19 Python
.NET面试问题集
2015/12/08 面试题
硕士研究生个人求职信
2013/12/04 职场文书
考试违纪检讨书
2014/02/02 职场文书
劳资协议书范本
2014/04/23 职场文书
竞选劳动委员演讲稿
2014/04/28 职场文书
小区文明倡议书
2014/05/16 职场文书
公司开业庆典策划方案
2014/06/04 职场文书
学校地质灾害防治方案
2014/06/10 职场文书
夫妻双方自愿离婚协议书怎么写
2014/12/01 职场文书
优秀教师先进材料
2014/12/16 职场文书
不同意离婚上诉状
2015/05/23 职场文书
SQLServer中exists和except用法介绍
2021/12/04 SQL Server