首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python入门系列(五)——迭代

目录:

一、迭代器

二、生成器

一、迭代器

我们提一下先提迭代的概念:迭代即为循环遍历,任何遍历的过程都是可以称作迭代。Python中序列、集合、字典、文件和生成器等都是可迭代的,任何可迭代对象都可以作用于for循环。

首先我们来借助最基本的两个内置函数来完成一个简单的迭代器。

我们可以看到触发了StopIteration异常,StopIteration 异常用于标识迭代的完成,防止出现无限循环的情况,所以我们做如下改写:

但,for循环却自带异常处理机制:

类中迭代器的使用

然后我们来拓展一下关于类中的迭代器,之前大家应该也已经留意到了,类中是内置了迭代器的专有方法的。

当然,我们最后的输出完全可以使用for循环将迭代器中的内容读出来,输出相同。

或者使用while循环,不过依然要添加异常处理:

二、生成器

而生成器是一个简单的方式来完成迭代,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。

觉得上面的概念太抽象?我们借助实例来解释~几乎所有相关教程都在扯著名的斐波那契数列,我们就不!

说起生成器的创建,常用两种方法,一种是改写列表生成式,一种是使用yield。

列表生成式

列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式,其实我们之前就有在使用了。

顾名思义,它生成了一个列表,那么如何改写为生成器呢?

我们可以看到,当前类型已经变为'generator',即生成器类型。改写方法就是将替换为。

接下来我们尝试使用一下:

yield

在python中,任何使用了 yield 的函数都被称为生成器(generator)或生成器函数。

这里往上翻一下,你会发现它与类中迭代器的使用中的例子功能是一致的,但那里用了近20行代码,然而生成器却只用了三行代码,这就是我们为什么说生成器是使用简单的方式进行迭代。

说到底,生成器就是一种特殊的迭代器,这也就是为什么这一章节题目如此简单:《迭代》。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190118G176Z400?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券