携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第10天,点击查看活动详情
1.可迭代对象(Iterable)
可迭代对象,可以简单理解为可遍历对象,即能够使用 for 循环遍历的对象。Python中常见的可迭代对象有:列表、元组、字符串、集合、range、字典等。
迭代器和生成器都是可迭代对象。
2.迭代器 (Iterator)
迭代,就是反复执行某一步骤的意思。迭代器,则是用来实现这一动作的东西。
迭代器的概念主要涉及到两部分:可迭代对象Iterable和迭代器对象Iterator。
3.可迭代对象
凡是可以返回一个迭代器的对象,都可以叫做可迭代对象,可迭代对象不是某一个具体的对象,而是实现了特定功能的一类对象:
Eg:
ata = (1,2,3,4)- ``
i1 = iter(data)- ``
i2 = iter(data)
迭代器是一个内部带有状态的对象。在你调用next函数时,它会根据内部的状态来返回不同的值,以此达到遍历数据的目的:
4.创建迭代器
一个迭代器对象需要实现两个成员函数:__iter__和__next__。 __iter__函数返回迭代器自身,__next__函数则是根据内部状态决定是返回一个值,还是引发一个StopIteration异常。
EG:
class SimpleRange:start = 0max = 0def __init__(self,start,max): #构造函数,指定Range的起始值start与最大值maxself.start = startself.max = maxdef __iter__(self):return self #返回自己- ``
def __next__(self):if self.start < self.max: #判断start是否到达了maxt = self.startself.start += 1return t #不是则返回start的值,并且start自增1else:raise StopIteration #是则引发异常,宣告迭代结束- ``
for s in SimpleRange(0,3): #获取0-2的值print(s)
生成器是一类特殊的迭代器,它是一种更为高级、更为优雅的迭代器。
在 Python 中有两种类型的生成器:生成器函数以及生成器表达式。
5.表生成式
要介绍生成器表达式,首先需要了解一下列表生成式。 列表生成式是一种创建列表的方式,当我们要创建一个满足特定条件的列表时,使用它就非常方便。
比如我们要创建一个包含0到10的平方的列表,传统的做法是:
data = [] for x in range(11): data.append(x * x)
而使用列表生成式,就可以一行语句创建:
data =[x*x for x in range(11)]
方括号里的左边部分是一个表达式x*x,代表列表元素怎么计算得来,右边是用for来表示的范围。
如果要进行条件筛选,可以在for后面带上if语句