韩漫免费漫画在线观看方法,《好好疼爱里面》免费看,年轻漂亮的女士护士内衣,妈妈醉酒后把我当爸爸电视剧

文章 > Python基础教程 > python迭代器如何实现

python迭代器如何实现

Python 迭代器 实现

头像

爱喝马黛茶的安东尼

2019-10-25 16:34:044398浏览 · 0收藏 · 0评论

迭代是Python最强大的功能之一,是访问集合元素的一种方式。迭代器是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。

迭代器有两个基本的方法:iter() 和 next()。

字符串,列表或元组对象都可用于创建迭代器:

实例(Python 3.0+)

>>> list=[1,2,3,4]
>>> it = iter(list)    # 创建迭代器对象
>>> print (next(it))   # 输出迭代器的下一个元素
1
>>> print (next(it))
2
>>>

迭代器对象可以使用常规for语句进行遍历:

实例(Python 3.0+)

#!/usr/bin/python3
 
list=[1,2,3,4]
it = iter(list)    # 创建迭代器对象
for x in it:
    print (x, end=" ")

执行以上程序,输出结果如下:

1 2 3 4

相关推荐:《Python基础教程

也可以使用 next() 函数:

实例(Python 3.0+)

#!/usr/bin/python3
import sys         # 引入 sys 模块
 
list=[1,2,3,4]
it = iter(list)    # 创建迭代器对象
 
while True:
    try:
        print (next(it))
    except StopIteration:
        sys.exit()

执行以上程序,输出结果如下:

1
2
3
4

创建一个迭代器

把一个类作为一个迭代器使用需要在类中实现两个方法 __iter__() 与 __next__() 。

如果你已经了解的面向对象编程,就知道类都有一个构造函数,Python 的构造函数为 __init__(), 它会在对象初始化的时候执行。

__iter__() 方法返回一个特殊的迭代器对象, 这个迭代器对象实现了 __next__() 方法并通过 StopIteration 异常标识迭代的完成。

__next__() 方法(Python 2 里是 next())会返回下一个迭代器对象。

创建一个返回数字的迭代器,初始值为 1,逐步递增 1:

实例(Python 3.0+)

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))

执行输出结果为:

1
2
3
4
5

StopIteration

StopIteration 异常用于标识迭代的完成,防止出现循环的情况,在 __next__() 方法中我们可以设置在完成指定循环次数后触发 StopIteration 异常来结束迭代。

在 20 次迭代后停止执行:

实例(Python 3.0+)

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)

执行输出结果为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

熟母10和熟母10的区别| 杏花天| 疯狂二人房间荷尔蒙爆发原声| 欧美14-18处免费| 张柏芝门户大开照| 母与子免费观看大全电视剧 | 代练通| YSL水蜜桃86满十八岁会黑吗.| 内衣走秀| 白天像教授晚上像野兽| 没戴奶罩他含了一天| 100%透光裸妆| 挤公交忘穿内裤被挺进H视频| 小荡货啊…啊…用力啊快视频 | 豆传媒剧国产MV有什么特点| 韩国电影片| 快拨出天我是你母亲歌词监控 | 《酒店激战》动漫1-5集免费观.. 《恋爱订单~再来一份》动漫 | XBOX360龙的欧美RPG| 日韩妆和欧的一区二区区别在哪| CSGO网站开箱推荐| 免费B站看大片真人电视剧| 《医务室的小秘密》动漫第一季免...| WWW.MD.GOV.CN| 白色变态董丝超薄开档连身袜| 《互换人妻HD中字》| 真人做爰45分钟| 日本大片又大又好看的PPT| 三男一女CP免费观看电视剧大全 | 按摩师把我添高潮了6次| 美女和帅哥一起努力生产豆浆| 少女配狗视频大全播放| 《喂奶人妻厨房HD》| 深田咏美在线| MV在线观看免费播放历史| 99久久99久久免费精品| 士豆网视频| 《吃乳》在线播放| 美女两个球球抖动抓球球视频| 《无能的丈夫》完整版| 三个老师轮流给学生布置作业