标签:ret 返回 nbsp 优雅 info 字符 信息 基本 style
下面用
用一幅图来概括:
迭代器理解
迭代是Python最强大的功能之一,是访问集合元素的一种方式。
迭代器是一个可以记住遍历的位置的对象。
迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。
迭代器有两个基本的方法:iter() 和 next()。
字符串,列表或元组对象都可用于创建迭代器:
任何实现了__iter__和__next__()方法的对象都是迭代器。__iter__返回迭代器自身,__next__返回容器中的下一个值
实现的方法
‘‘‘
迭代器
‘‘‘
class iterdemo():
def __init__(self):
self.number = 1
def __iter__(self):
print(‘iter!‘)
return self
def __next__(self):
print(‘next!‘)
self.number = self.number + 1
return self.number
n = iterdemo()
print(n)
for i in n:
print(i)
生成器
生成器是一种特殊的迭代器,它的返回值不是通过return而是用yield
生成器算得上是Python语言中最吸引人的特性之一,生成器其实是一种特殊的迭代器,不过这种迭代器更加优雅。它不需要再像上面的类一样写__iter__()和__next__()方法了,只需要一个yiled关键字。 生成器一定是迭代器(反之不成立)
方式一:
gen = (x + 2 for x in range(10)) print(next(gen)) print(next(gen)) print(next(gen)) print(next(gen)) print(next(gen)) print(next(gen)) print(next(gen)) print(next(gen)) print(next(gen))
方式二
#每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。
def gen(): i = 1 print(‘i=‘, i) yield i i = i + 1 print(‘i=‘, i) yield i i = i + 1 print(‘i=‘, i) yield i i = i + 1 print(‘i=‘, i) yield i n = gen() next(n) next(n) next(n) next(n)
结果是: <generator object number at 0x005E4F60>说明是生成器
标签:ret 返回 nbsp 优雅 info 字符 信息 基本 style
原文地址:https://www.cnblogs.com/CK85/p/10292271.html