给网站做伪静态,wordpress upyun,网站开发需要注意的问题,百度软件应用市场一、迭代器
支持迭代的容器#xff0c;如列表#xff08;list#xff09;、元组#xff08;tuple#xff09;、字典#xff08;dict#xff09;、集合#xff08;set#xff09;这些序列式容器。
自定义迭代器的类中必须实现以下2个方法#xff1a; __next__(self)…一、迭代器
支持迭代的容器如列表list、元组tuple、字典dict、集合set这些序列式容器。
自定义迭代器的类中必须实现以下2个方法 __next__(self)返回容器的下一个元素。 __iter__(self)该方法返回一个迭代器iterator。 除此之外Python 内置的 iter() 函数也会返回一个迭代器该函数的语法格式如下 iter(obj[, sentinel]) 其中obj 必须是一个可迭代的容器对象而 sentinel 作为可选参数如果使用此参数要求 obj 必须是一个可调用对象__call__。
二、生成器
特殊的迭代器与迭代器不同的是它可以实现在迭代的同时生成元素而迭代器必须先将所有数据存储到容器中才能开始迭代。
生成器创建方式也比迭代器简单很多 定义一个以 yield 关键字标识返回值的函数 调用刚刚创建的函数即可创建一个生成器。 def intNum():print(开始执行)for i in range(5):yield iprint(继续执行)
num intNum() # 成功过创建了一个num生成器对象和 return 相比yield 除了可以返回相应的值还有一个更重要的功能即每当程序执行完该语句时程序就会暂停执行。
print(intNum()) 即便调用生成器函数Python 解释器也不会执行函数中的代码它只会返回一个生成器对象。
要想使生成器函数得以执行或者想使执行完 yield 语句立即暂停的程序得以继续执行有以下 2 种方式 通过生成器上面程序中的 num调用 next() 内置函数或者 __next__() 方法 通过 for 循环遍历生成器。 # 调用next()内置函数
print(next(num))# 调用__next()__方法
print(num.__next__())# 通过for循环遍历生成器
for i in num:print(i) 除此之外还可以使用 list() 函数和 tuple() 函数直接将生成器能生成的所有值存储成列表或者元组的形式。例如
num intNum()
print(list(num))num intNum()
print(tuple(num))