迭代器

迭代器

  迭代器即迭代的工具

    迭代:迭代指的是重复迭代,每一次迭代都是基于上一次的结果而来的。

    迭代器:迭代器指的是迭代取值的工具,他可以迭代取值。

  如果想要知道python中迭代器是什么?必须先知道什么是可迭代对象?

  

  可迭代对象:所有的序列类型:str , list ,tuple , dict , set ,f

  凡是内部有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')
# # 确定: 文件既是可迭代对象,也是迭代器对象。

 

 

原文地址:https://www.cnblogs.com/lvguchujiu/p/11852118.html