码迷,mamicode.com
首页 > 其他好文 > 详细

迭代器

时间:2019-11-13 20:33:59      阅读:85      评论:0      收藏:0      [点我收藏+]

标签:重复   div   捕获异常   方法   bsp   info   ima   一个开始   工具   

迭代器就是迭代的工具

迭代:指的是重复迭代,每一次迭代的结果都是基于上一次结果而来的

迭代器:

指的是迭代取值的工具

PS:如果我们想知道python中迭代器是什么,首先我们要知道什么是可迭代对象

可迭代对象

凡是内部有.__iter__()

方法的都是可迭代对象,比如str,list,tuple,dict,set,f(文件)

技术图片

 

 

获取迭代器

通过序列类型.__iter__()方法得到的返回值,就是迭代器对象

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

打印结果:
<list_iterator object at 0x0000022F3EEDC848>

如何迭代取值?

通过迭代器对象.__next__(),每执行一次,都会从迭代器对象中取一个值,取完再取的话就会报错:StopIteration

# 迭代取值
list = [1, 2, 3,4]
list.__iter__().__next__()
print(list.__iter__().__next__())

打印结果:
1

这里举个例子,有4个元素取5个会怎样?

技术图片

 技术图片

 

 那么现在我们就可以用try和except把异常抛出

try:捕获异常(StopIteration)

except:抛出异常

list1 = [1, 2, 3, 4]
list_iter = list1.__iter__()
try:
    print(list_iter.__next__())
    print(list_iter.__next__())
    print(list_iter.__next__())
    print(list_iter.__next__())
    print(list_iter.__next__())
except StopIteration:
    print(end)

技术图片

 

 迭代器对象的优点

1、不依赖于索引迭代取值

2、节省内存空间

缺点:

1、取指定的某个值麻烦

2、每次取值都要从第一个开始,无法通过索引进行取值

可迭代对象和迭代器对象的区别:

可迭代对象:凡是内部有.__iter__()方法的都是可迭代对象

迭代器对象:通过序列类型.__iter__(),得到的返回值就是迭代器对象

注意:可迭代对象不一定是迭代器对象

  但迭代器对象一定是可迭代对像

 

迭代器

标签:重复   div   捕获异常   方法   bsp   info   ima   一个开始   工具   

原文地址:https://www.cnblogs.com/aheng/p/11852943.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!