迭代在python中就是属于可以做for循环遍历的对象,被叫做可迭代对象。
二、可迭代对象分为容器和迭代器两个,迭代器又有生成器分支 三、 迭代器性质:
- 使用print无法查看迭代器中的元素。
- 使用len方法也无法查看其中元素个数。
- 迭代器(iterator)
- 迭代器类似数据结构中的队列(先进先出),迭代器中的元素被取出
,迭代器中的元素就会消失,全部被取出时,迭代器也会消失。 - 任何容器型数据类型都可以使用iter方法转为迭代器。
str1='hello' str1_iter=iter(str1) print(str1_iter,type(str1_iter)) #四、如何获取迭代器中的元素# list1=[1,2,3,4] list_iter=iter(list1) #
- for循环遍历
- next()
for i in 迭代器: print(i) print(next(迭代器))五、 迭代器的应用
元素被全部取出,迭代器消失,迭代器所占内存被释放,程序就可以减小内存占用。
六、生成器性质:
- 生成器是为了生成迭代器。(生成器一定是迭代器,但是迭代器不一定是生成器)
- 生成器就是一个函数。
- 调用生成器函数时,函数不执行。
- 只有在获取元素时生成器函数才执行,并且获取一个元素才能够让生成器函数执行一次。
- 生成器函数返回内部结果使用yield代替一般函数的return。
- yield执行几次,生成器就产生几个元素。
- return和yield都可以将函数内部结果返回到外部。
- return被触发,函数立即结束。yield不会结束函数执行。
- return和yield后面都可接表达式。
# 练习:使用生成器创建Python001-python999学号。 def stuId(): for i in range(1, 1000): yield f'python{i:0>3}' f = stuId() print(f) print(next(f)) for _ in range(100): print(next(f)) # ================ print(next(f))