Python迭代器定义与简单用法分析


Posted in Python onApril 30, 2018

本文实例讲述了Python迭代器定义与简单用法。分享给大家供大家参考,具体如下:

一、什么是迭代器

迭代,顾名思义就是重复做一些事很多次(就现在循环中做的那样)。迭代器是实现了__next__()方法的对象(这个方法在调用时不需要任何参数),它是访问可迭代序列的一种方式,通常其从序列的第一个元素开始访问,直到所有的元素都被访问才结束。 [注意]:迭代器只能前进不能后退

[迭代器的优点]:

使用迭代器不要求事先准备好整个迭代过程中的所有元素。迭代器仅仅在迭代到某个元素时才计算该元素,而在这之前或之后元素可以不存在或者被销毁。因此迭代器适合遍历一些数量巨大甚至无限的序列。

 二、创建迭代器

A、使用内建的工厂函数iter(iterable)可以将可迭代序列转换为迭代器

a=[1,2,3,4]
b=(1,2,3)
str='Tomwenxing'
print(iter(a))
print(iter(b))
print(iter(str))

运行结果:

<listiterator object at 0x0000000001D6D550>
<tupleiterator object at 0x0000000001D6D550>
<iterator object at 0x0000000001D6D550>

B、自定义迭代器

•Python中迭代器的本质上每次调用__next__()方法都返回下一个元素或抛出StopIteration的容器对象

•由于Python中没有“迭代器”这个类,因此具有以下两个特性的类都可以称为“迭代器”类:

1、有__next__()方法,返回容器的下一个元素或抛出StopIteration异常

2、有__iter__()方法,返回迭代器本身

#斐波那契数列
class Fabs():
  def __init__(self,max):
    self.max=max
    self.n,self.a,self.b=0,0,1
  def __iter__(self):#定义__iter__方法
    return self
  def __next__(self):#定义__next__方法
    if self.n<self.max:
      tmp=self.b
      self.a,self.b=self.b,self.a+self.b
      #等价于:
      #t=(self.a,self.a+self.b)
      #self.a=t[0]
      #self.b=t[1]
      self.n+=1
      return tmp
    raise StopIteration
print(Fabs(5))
for item in Fabs(10):
  print(item,end=' ')

运行结果:

<__main__.Fabs object at 0x00000000023F9278>
1 1 2 3 5 8 13 21 34 55

三、迭代器的方法

1.iter.__next__():返回迭代器的下一个元素,但没有下一个元素时抛出StopIteration异常

list=[1,2,3,4]
list=iter(list)
print(list.__next__())
print(list.__next__())
print(list.__next__())
print(list.__next__())
print(list.__next__())

运行结果:

Traceback (most recent call last):
  File "E:\py3Demo\Hello\iterDemo.py", line 7, in <module>
    print(list.__next__())
StopIteration
1
2
3
4

2.iter.__iter__():返回迭代器对象本身

list=[1,2,3,4]
list=iter(list)
print(list.__iter__())

运行结果:

<list_iterator object at 0x0000000001D6F208>

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
用Python代码来解图片迷宫的方法整理
Apr 02 Python
Python实现的数据结构与算法之链表详解
Apr 22 Python
介绍Python的Django框架中的静态资源管理器django-pipeline
Apr 25 Python
在Django中管理Users和Permissions以及Groups的方法
Jul 23 Python
python3实现UDP协议的服务器和客户端
Jun 14 Python
Python 将pdf转成图片的方法
Apr 23 Python
Python django框架开发发布会签到系统(web开发)
Feb 12 Python
pymysql 插入数据 转义处理方式
Mar 02 Python
使用Python+selenium实现第一个自动化测试脚本
Mar 17 Python
解析python 中/ 和 % 和 //(地板除)
Jun 28 Python
Django如何实现密码错误报错提醒
Sep 04 Python
Python批量修改xml的坐标值全部转为整数的实例代码
Nov 26 Python
python 实现在txt指定行追加文本的方法
Apr 29 #Python
Python 实现在文件中的每一行添加一个逗号
Apr 29 #Python
python 把文件中的每一行以数组的元素放入数组中的方法
Apr 29 #Python
详谈python3 numpy-loadtxt的编码问题
Apr 29 #Python
python3.4.3下逐行读入txt文本并去重的方法
Apr 29 #Python
Python使用re模块实现信息筛选的方法
Apr 29 #Python
Python排序算法之选择排序定义与用法示例
Apr 29 #Python
You might like
php 文件上传实例代码
2012/04/19 PHP
php颜色转换函数hex-rgb(将十六进制格式转成十进制格式)
2013/09/23 PHP
php删除数组元素示例分享
2014/02/17 PHP
PHP正则验证Email的方法
2015/06/15 PHP
PHP简单日历实现方法
2016/07/20 PHP
php使用gd2绘制基本图形示例(直线、圆、正方形)
2017/02/15 PHP
PHP实现负载均衡session共享redis缓存操作示例
2018/08/22 PHP
jQuery中(function(){})()执行顺序的理解
2013/03/05 Javascript
JavaScript的arguments对象应用示例
2014/09/15 Javascript
JS获取表格内指定单元格html内容的方法
2015/03/31 Javascript
微信WeixinJSBridge API使用实例
2015/05/25 Javascript
JS实现网页顶部向下滑出的全国城市切换导航效果
2015/08/22 Javascript
基于jQuery实现仿百度首页换肤背景图片切换代码
2015/08/25 Javascript
JavaScript生成二维码图片小结
2015/12/27 Javascript
在javascript中,null>=0 为真,null==0却为假,null的值详解
2017/02/22 Javascript
vue+vuex+axio从后台获取数据存入vuex实现组件之间共享数据
2017/04/22 Javascript
原生JS实现图片网格式渐显、渐隐效果
2017/06/05 Javascript
jQuery实现用户信息表格的添加和删除功能
2017/09/12 jQuery
在Swiper内如何制作CSS3动画效果示例代码
2017/12/07 Javascript
原生JS写Ajax的请求函数功能
2017/12/22 Javascript
webpack打包react项目的实现方法
2018/06/21 Javascript
vue 根据选择条件显示指定参数的例子
2019/11/09 Javascript
Python中进程和线程的区别详解
2017/10/29 Python
pycharm运行和调试不显示结果的解决方法
2018/11/30 Python
解决django 向mysql中写入中文字符出错的问题
2020/05/18 Python
Python字符串格式化常用手段及注意事项
2020/06/17 Python
python缩进长度是否统一
2020/08/02 Python
python之pygame模块实现飞机大战完整代码
2020/11/29 Python
ECCO爱步美国官网:来自丹麦的鞋履品牌
2016/11/23 全球购物
Wiggle美国:英国骑行、跑步、游泳、铁人三项商店
2018/10/27 全球购物
大学军训感想
2014/02/12 职场文书
领导干部作风建设工作总结
2014/10/23 职场文书
2015年圣诞节活动总结
2015/03/24 职场文书
2015年感恩父亲节活动策划方案
2015/05/05 职场文书
2015年行政执法工作总结
2015/05/23 职场文书
创业计划书之奶茶店开店方案范本!
2019/08/06 职场文书