栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

儿童python教程178:什么是迭代器,Python迭代器及其用法

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

儿童python教程178:什么是迭代器,Python迭代器及其用法

前面介绍了使用 for 循环遍历列表、元组和字典等,这些对象都是可迭代的,因此它们都属于迭代器。迭代器其实就是一个实现了迭代器协议的容器类对象。

简单的理解容器,就是用来存放各种元素的,是各种元素的集合。常用的容器包括元组、列表、字典、集合等。

迭代器基于以下两个方法实现:
  1. __next__(self):返回容器的下一个元素。
  2. __iter__(self):该方法返回一个迭代器(iterator)。



迭代器可以利用 Python 内置的 iter() 函数和一个序列来创建。例如:

# 将列表转换为迭代器

my_iter = iter([2, 'fkit', 4])

# 依次获取迭代器的下一个元素

print(my_iter.__next__())

print(my_iter.__next__())

print(my_iter.__next__())

print(my_iter.__next__())
运行结果为:

2
fkit
4
Traceback (most recent call last):
  File "C:UsersmengmaDesktopdemo.py", line 7, in
    print(my_iter.__next__())
StopIteration

可以看到,当遍历完序列之后如果继续遍历,会引发 StopIteration 异常,这样迭代器就可以与循环兼容,因为可以捕获这个异常并停止循环。例如:

for i in iter([2, 'fkit', 4]):

  print(i,end=" ")
运行结果为:

2 fkit 4


Python 也允许我们自定义一个迭代器,只需要实现 __next__() 和 __iter__() 特殊方法即可。例如:

class countDown:

  def __init__(self,step):

    self.step = step

  def __next__(self):

    if self.step <= 0:

      raise StopIteration

    self.step -= 1

    return self.step

  def __iter__(self):

    return self

for element in countDown(10):

  print(element,end=" ")
输出结果为:

9 8 7 6 5 4 3 2 1 0


迭代器本身是一个底层的特性和概念,在程序中并不常用,但它为生成器这一更有趣的特性提供了基础。

有关生成器的相关知识,会在后续章节中介绍。


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/805918.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号