python迭代器

迭代器

迭代器是一个可以记住遍历的位置的对象。

迭代器有两个基本的方法:iter() 和 next()。

使用对象内置的__iter__()方法生成迭代器

it = name.__iter__()

使用内置工厂函数生成迭代器

it = iter(name)

迭代器通过其内建的 iter.next() 方法,或通过 Python 内建的 next() 来迭代下一个元素,直到最后触发 StopIteration异常后表示迭代结束。

实例:

name = {'张三': 24, '李四': 25, '王五': 20}
it = iter(name)
while True:
try:
print(next(it))
except StopIteration:
break

输出为三个key的值

 

而for循环,本质就是调用了迭代器

for x in name 把name变成了一个迭代器,然后调用next方法,而且不用写 except StopIteration

 

 

迭代器的作用:

优点:

1.提供一种不依赖索引的取值方式,这样就可以遍历那些没有索引的可迭代对象(字典,集合,文件)

2.迭代器与列表比较,迭代性是惰性计算,更省内存

缺点:

1.永远无法获取迭代器的长度,使用不如列表索引灵活,比如要获取第三个,则必须要一个个next

2.一次性,只能往后取,无法倒着取

实例:

name = {'张三': 24, '李四': 25, '王五': 20}
it = iter(name)
while True:
    try:
        print(next(it))
    except StopIteration:
        break
for i in it:
    print(i)

输出只有三个key的值,因为it这个迭代器已经取完了值

 

posted on 2018-08-22 10:58  Messiless  阅读(133)  评论(0编辑  收藏  举报