iter()与next()
一种自动迭代的更优雅的实现是使用for循环
for循环实现迭代
for循环的内部实现为:
# create an iterator object from that iterable
iter_obj = iter(iterable)
# infinite loop
while True:
try:
# get the next item
element = next(iter_obj)
# do something with element
except StopIteration:
# if StopIteration is raised, break from loop
break
可以看出,for循环是一个通过捕捉StopIteration异常的While循环
在Python中,迭代器(Iterator)和可迭代(iterable)的区别是,迭代器支持iter()和next()方法;可迭代支持iter()方法。可迭代只能在for循环中获得元素,迭代器还可以用next()方法获取元素。
list/truple/map/dict都是可迭代,但不是迭代器;这些数据的大小是确定的;迭代器不是,迭代器不知道要执行多少次,所以可以理解为不知道有多少个元素,每调用一次next(),就会往下走一步。
判断是不是可以迭代,用Iterable
判断是不是可以迭代
判断是不是可以迭代
判断是不是迭代器,用Iterator
判断是不是迭代器
判断是不是迭代器
凡是可以for循环的,都是Iterable
凡是可以next()的,都是Iterator
通过iter()函数获得一个Iterator对象