迭代器
迭代器是一个可以记住遍历的位置的对象。
迭代器有两个基本的方法: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这个迭代器已经取完了值