迭代器

1.迭代器的定义:
  字面意思:更新迭代,器:工具,可更新迭代的工具。
  专业角度:内部含有'__iter__'方法且含有'__next__'方法的对象就是迭代器

2.可迭代对象与迭代器的对比

  可迭代对象是一个操作方法较多、比较直观、存储数据较少的一个数据集。侧重于对数据可以灵活处理,内存足够大,可以将数据集 设置为可迭代对象

  迭代器是一个非常节省内存,可以记录取值位置,可以通过循环+next()方法取值,但是不直观,操作方法比较单一的数据集。

  当你的数据量过大时,以节省内存为首选因素时,就可以将数据集设置为迭代器

3.优点

  1.节省内存

  2.惰性机制:即next()一次,取一个值,绝不多取

4.缺点

  1.不能直观的查看里面的数据

  2.取值时只能依次向下取值

  3.速度慢

# 判断是否是迭代器:'__iter__' and '__next__' in dir(对象)
with open('gg.txt', encoding='utf-8', mode='w') as f:
    print(('__iter__' and '__next__') in dir(f))
    f.write('文件句柄是迭代器噢!')
# 可迭代对象可以转化成迭代器
s1 = 'dsfdsf'

# obj = s1.__iter__()
obj = iter(s1) # 将s1转化为迭代器
print(obj)

# print(obj.__next__())
print(next(obj)) # 利用迭代器对s1进行直接依次取值


l1 = [11, 22, 33, 44, 55, 66]
iter_l1 = iter(l1)

print(next(iter_l1))
print(next(iter_l1))
print(next(iter_l1))
print(next(iter_l1))
print(next(iter_l1))
print(next(iter_l1))
# 迭代器在进行迭代取值时永远会记住当前所在的位置
l2 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
obj2 = iter(l2)
for i in range(4):
    print(next(obj2))

for i in range(4, 9):
    print(next(obj2))
原文地址:https://www.cnblogs.com/GOD-L/p/13528165.html