网站建设资讯

NEWS

网站建设资讯

python函数实现迭代的简单介绍

python 如何使用生成器函数实现可迭代对象

Iamlaosong文

创新互联建站10多年成都企业网站建设服务;为您提供网站建设,网站制作,网页设计及高端网站定制服务,成都企业网站建设及推广,对葡萄架等多个领域拥有多年的网站维护经验的网站建设公司。

我们在用for ... in ...语句循环时,in后面跟随的对象要求是可迭代对象,即可以直接作用于for循环的对象统称为可迭代对象(Iterable),如list、tuple、dict、set、str等。

可迭代对象是实现了__iter__()方法的对象,而迭代器(Iterator)则是实现了__iter__()和__next__()方法的对象,可以显示地获取下一个元素。这种可以被next调用并不断返回下一个值的对象称为迭代器。迭代器一定是可迭代对象,反过来则不一定成立。用iter()函数可以把list、dict、str等Iterable变成Iterator,例如:

bb=[x for x in range(10)]

cc=iter(bb)

cc.next()

循环变量的值其实可以看着是一次次用next取值的过程,每取一个值,做一次处理。list等对象用于循环实际上可以看着是用iter()方法产生一个迭代器,然后循环取值。

生成器(generator)就是一个能返回迭代器的函数,其实就是定义一个迭代算法,可以理解为一个特殊的迭代器。调用这个函数就得到一个迭代器,生成器中的yield相当于一个断点,执行到此返回一个值后暂停,从而实现next取值。

python中的迭代器的理解?

9.9. 迭代器

现在你可能注意到大多数容器对象都可以用 for 遍历:

for element in [1, 2, 3]:

print(element)

for element in (1, 2, 3):

print(element)

for key in {'one':1, 'two':2}:

print(key)

for char in "123":

print(char)

for line in open("myfile.txt"):

print(line, end='')

这种形式的访问清晰、简洁、方便。迭代器的用法在 Python 中普遍而且统一。在后台, for 语句在容器对象中调用 iter() 。该函数返回一个定义了 __next__() 方法的迭代器对象,它在容器中逐一访问元素。没有后续的元素时, __next__() 抛出一个 StopIteration 异常通知 for 语句循环结束。你可以是用内建的 next() 函数调用 __next__() 方法;以下是其工作原理的示例:

s = 'abc'

it = iter(s)

it

next(it)

'a'

next(it)

'b'

next(it)

'c'

next(it)

Traceback (most recent call last):

File "

", line 1, in ?

next(it)

StopIteration

了解了迭代器协议的后台机制,就可以很容易的给自己的类添加迭代器行为。定义一个 __iter__() 方法,使其返回一个带有 __next__() 方法的对象。如果这个类已经定义了 __next__() ,那么 __iter__() 只需要返回 self:

Python基础之迭代器

一.什么是迭代器

迭代器是用来迭代取值的工具。

而涉及到把多个值循环取出来的类型有:列表,字符串,元组,字段,集合,打开文件等。通过使用的遍历方式有for···in···,while等,但是,这些方式只适用于有索引的数据类型。为了解决索引取的局限性,python提供了一种 不依赖于索引的取值方式:迭代器

注意:

二.可迭代对象

可迭代对象:但凡内置有__iter__方法的都称为可迭代对象

常见的可迭代对象:

1.集合数据类型,如list,tuple,dict,set,str等

2.生成器,包括生成器和带yield的生成器函数。

三.如何创建迭代器

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

迭代器是可以迭代的对象,这意味着您可以遍历所有值。

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

简而言之,一个类里面实现了__iter__()和__next__()这两个魔法方法,那么这个类的对象就是可迭代对象。

四.迭代器的优缺点

1.优点

2.缺点

五.迭代器示例

另外,如果类Stu继承了Iterator,那么Stu可以不用实现__iter__()方法

遍历迭代器

StopIteration

如果你有足够的 next() 语句,或者在 for 循环中使用,则上面的例子将永远进行下去。

为了防止迭代永远进行,我们可以使用 StopIteration 语句。

在 __next__() 方法中,如果迭代完成指定的次数,我们可以添加一个终止条件来引发错误


标题名称:python函数实现迭代的简单介绍
文章URL:http://cdweb.net/article/hddhig.html