首页 > 其他 > 详细

可迭代对象和迭代器

时间:2020-05-03 16:23:07      阅读:60      评论:0      收藏:0      [点我收藏+]

可迭代对象(iterable)

定义

实现了__iter__方法的对象称为可迭代对象,在python中,可迭代对象有字符串、列表、元组、字典、集合、文件等

判断

判断对象是否是可迭代对象

from collections.abc import Iterable

print(isinstance("123", Iterable))        #字符串:True
print(isinstance([1, 2, 3], Iterable))    #列表:True
print(isinstance((1, 2, 3), Iterable))    #元组:True
print(isinstance({"a": 1, "b": 2}, Iterable))   #字典:True
print(isinstance({1, 2, 3}, Iterable))    #集合:True
print(isinstance(open("test.txt", "r"), Iterable))  #文件:True

也可以去源码里查看,比如源码里的list类实现了__iter__方法
技术分享图片

迭代器(iterator)

定义

实现了__iter__和__next__方法的对象称为迭代器,__iter__返回一个特殊的迭代器对象self,__next__返回下一个可用元素,如果没有元素,会抛出StopIteration异常

创建迭代器

class MyNumbers:

    def __init__(self):
        self.a = 1

    def __iter__(self):
        return self

    def __next__(self):
        x = self.a
        self.a += 1
        return x

my_numbers = MyNumbers()
print(next(my_numbers))  #1
print(next(my_numbers))  #2
print(next(my_numbers))  #3

判断

from collections.abc import Iterator

print(isinstance(my_numbers, Iterator))  #my_numbers对象:True
···

## 特点
+ 迭代器是一个可以记住遍历位置的对象
+ 迭代器对象从集合的第一个元素可以访问,直到所有的元素被访问完结束
+ 迭代器只能往前不能后退
+ 迭代器有两个基本的方法:iter()和next()

可迭代对象和迭代器

原文:https://www.cnblogs.com/my_captain/p/12822120.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!