Python 迭代器(Iterator)

python

版权所有,未经许可,禁止转载


章节

  • Python 介绍
  • Python 开发环境搭建
  • Python 语法
  • Python 变量
  • Python 数值类型
  • Python 类型转换
  • Python 字符串(String)
  • Python 运算符
  • Python 列表(list)
  • Python 元组(Tuple)
  • Python 集合(Set)
  • Python 字典(Dictionary)
  • Python If … Else
  • Python While 循环
  • Python For 循环
  • Python 函数
  • Python Lambda
  • Python 类与对象
  • Python 继承
  • Python 迭代器(Iterator)
  • Python 模块
  • Python 日期(Datetime)
  • Python JSON
  • Python 正则表达式(RegEx)
  • Python PIP包管理器
  • Python 异常处理(Try…Except)
  • Python 打开文件(File Open)
  • Python 读文件
  • Python 写文件
  • Python 删除文件与文件夹


python-迭代器iterator">Python 迭代器(Iterator)

迭代器是一个包含有限数量值的对象。

迭代器是一个可以被迭代的对象,可以遍历迭代器中的所有值。

从技术上讲,在Python中,迭代器是实现迭代器协议的对象,该协议由方法__iter__()__next__()组成。

可迭代的数据类型

列表、元组、字典和集合都是可迭代的对象,可以从其中获得迭代器。

所有这些对象都可用iter()方法获取迭代器:

示例

从元组中获取一个迭代器,遍历并打印每个值:

mytuple = ("自行车", "汽车", "高铁")

myit = iter(mytuple)

print(next(myit))

print(next(myit))

print(next(myit))

字符串也是可迭代对象,可以从中获取迭代器:

示例

使用迭代器遍历字符串:

mystr = "自行车"

myit = iter(mystr)

print(next(myit))

print(next(myit))

print(next(myit))

for循环迭代

我们也可以使用for循环来遍历一个迭代器:

示例

迭代元组的值:

mytuple = ("自行车", "汽车", "高铁")

for x in mytuple:

print(x)

示例

迭代字符串的字符:

mystr = "自行车"

for x in mystr:

print(x)

for循环内部实际上进行了迭代器的获取,及next()方法的调用。

创建迭代器

一个对象要创建迭代器,变成可迭代的,必须实现方法:__iter__()__next__()

__iter__()方法必须始终返回迭代器对象本身。

__next__()方法必须返回序列中的下一项。

示例

创建一个返回数字的迭代器,从1开始,每个序列项递增1(返回1、2、3、4、5等):

class MyNumbers:

def __iter__(self):

self.a = 1

return self

def __next__(self):

x = self.a

self.a += 1

return x

myclass = MyNumbers()

myiter = iter(myclass)

print(next(myiter))

print(next(myiter))

print(next(myiter))

print(next(myiter))

print(next(myiter))

StopIteration

上面示例next()调用将永远继续,我们可以使用StopIteration语句停止迭代。

__next__()方法中,我们可以根据迭代次数添加终止条件来引发错误:

示例

迭代20次后停止:

class MyNumbers:

def __iter__(self):

self.a = 1

return self

def __next__(self):

if self.a <= 20:

x = self.a

self.a += 1

return x

else:

raise StopIteration

myclass = MyNumbers()

myiter = iter(myclass)

for x in myiter:

print(x)

以上是 Python 迭代器(Iterator) 的全部内容, 来源链接: utcz.com/z/388211.html

回到顶部