迭代器即迭代的工具
迭代:迭代指的是重复迭代,每一次迭代都是基于上一次的结果而来的。
迭代器:迭代器指的是迭代取值的工具,他可以迭代取值。
如果想要知道python中迭代器是什么?必须先知道什么是可迭代对象?
凡是内部有str.__ iter __ ()方法的都是可迭代对象。
获取迭代器:
通过可迭代对象.__ iter __(),得到的返回值都是“迭代器对象”。
迭代器是迭代取值的工具,作用是迭代取值
如何迭代取值:
迭代器对象.__ next __() #"每一次执行",都会从迭代器对象中取出一个值
# 测试迭代文件 f = open('user.txt', 'r', encoding='utf-8') iter_f = f.__iter__() while True: try: print(iter_f.__next__()) except StopIteration: break
str1 = 'hello tank' # 先获取迭代器对象 iter_str1 = str1.__iter__() while True: try: print(iter_str1.__next__()) except StopIteration: break
总结:可迭代对象 VS 迭代器对象:
获取可迭代对象:定义序列类型(str , list , set ,tuple , dict , f)
特点:
内置有__ iter __()
获取迭代器对象:通过可迭代对象调用.__ iter __()得到返回值
特点:
内置有__ next __()
迭代器对象的优缺点:
优点:
1、不依赖于索引迭代取值。
2、节省内存空间。
缺点:
1、取指定某个值麻烦
2、每次取值都要从第一个值开始,无法通过索引取值
for循环原理
语法: for i in 可迭代对象: in:可迭代对象 ---->内部会自动调用.__ iter __()---->迭代器对象 for line in list1: #迭代器对象. __ next __()
# 确定: 迭代器对象也是一个可迭代对象
# 判断可迭代对象是否是迭代器对象
# 唯独文件比较特殊: 因为文件从读取出来的时候就是一个迭代器对象
# f ---> 可迭代对象, 还是迭代器对象
# f = open('user.txt', 'r', encoding='utf-8')
# # 确定: 文件既是可迭代对象,也是迭代器对象。