迭代器、生成器和模块
一、迭代器
1. 迭代器概念
什么是迭代器(iter)?
迭代器是容器型数据类型,可以同时保存多个数据;可以被遍历,也可以转换成列表和元组
打印迭代器的时候无法打印里面的元素;迭代器不支持len()函数操作
如果需要迭代器中的元素,必须将元素从迭代器中取出,而且一旦取出元素,这个元素在迭代器中就不存在了
2. 创建迭代器
方式一:通过iter将其他序列转换成迭代器
方式二:创建生成器对象(生成器可以看成是一种特殊的迭代器)
iter1 = iter('abc')
print(iter1) # <str_iterator object at 0x000001CC98246D90>,地址,无法打印元素
# print(len(iter1)) # 报错:TypeError: object of type 'str_iterator' has no len()
3. 获取迭代器中的元素
获取单个元素: next(迭代器)
print(next(iter1)) # a
print(next(iter1)) # b
print(next(iter1)) # c
# print(next(iter1)) # 报错:StopIteration,已经取完了iter中的元素,iter中没有元素了,所以再取会报错
for x in iter1:
print(f'x:{
x}') # 结果为空,没有任何元素
iter2 = iter([1, 2, 3, 4])
for x in iter2:
print(f'x:{
x}')
# print(next(iter2)) # 报错:StopIteration
iter3 = iter('hello')
print(list(iter3))
# print(next(iter3)) # 报错:StopIteration
二、生成器
1. 生成器(generator)
生成器是具备能够产生多个数据能力的一种容器
生成器在获取数据的时候和迭代器一样
2. 创建生成器
调用一个带有yield关键字的函数可以得到一个生成器对象
如果一个函数中有yield,那么这个函数在调用的时候不会执行函数体也不会获取返回值,而是得到一个生成器
def func1()