迭代器

迭代器

  • 迭代器

    • 用来取值的工具,可以迭代取值
    • 迭代:迭代是重复反馈过程的活动,每次对过程的重复成为一次“迭代”
    • 每一次迭代都是基于上一次的结果而来的
  • 可迭代对象:

    所有的序列类型:str、list、tuple、dict、set、f

    凡是内部有.__iter__()方法的都是可迭代对象

  • 获取迭代器:

    通过可迭代对象.__iter__()方法得到的返回值就是迭代器对象

  • 如何迭代取值:

    迭代器对象.__next__()

    每一次执行,都会从迭代器对象中取一个值

取值相当于for循环,而for循环的原理相当于

list = [1, 2, 3, 4]
for line in list1:
    迭代器对象.__next__()
    print(line)
str1 = 'hello world!'
for i in str1:
    print(i.__iter__().__next__())

list1是可迭代对象——>内部会自动调用.__iter__()——>迭代器对象

当值被取完就会就会报错,所以这里用到

try: 捕获异常

l1 = [1, 2, 3, 4, 5]
inter_l1 = l1.__iter__()
while True:
    print(inter_l1.__next__())
StopIteration	# 报错

用法:

try:
    print(iter_list1.__next__())
except StopIteration:
    break
l1 = [1, 2, 3, 4, 5]
inter_l1 = l1.__iter__()
while True:
    try:
        print(inter_l1.__next__())
    except StopIteration:
        break
        
1
2
3
4
5

迭代器对象也是一个可迭代对象

可迭代对象不一定是迭代器对象

文件比较特殊:文件即是可迭代对象,也是迭代器对象

  • 迭代器对象的优点

    • 不依赖与索引迭代取值
    • 节省内存空间
  • 迭代器对象的缺点

    • 取值麻烦
    • 每次取值都要从第一个值开始,无法通过索引取值
posted @ 2019-11-19 14:36  YGZICO  阅读(74)  评论(0编辑  收藏  举报