python迭代器

迭代器

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

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

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

1
it = name.__iter__()

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

1
it = iter(name)

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

实例:

1
2
3
4
5
6
7
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.一次性,只能往后取,无法倒着取