迭代
程序员文章站
2022-05-20 22:08:09
...
原始for循环代码:
def funky_for_loop(iterable,action_to_do):
for item in iterable:
action_to_do(item)
以下代码是将for循环转换为while循环来实现:
实现步骤:
1.从给定的可迭代对象中获取迭代器
2.反复从迭代器中获取下一个元素
3.如果我们成功获得下一个元素,则执行for循环的主体
4.如果我们在获取下一个元素时遇到StopIteration异常,那么就停止循环
def funky_for_loop(iterable,action_to_do):
iterator = iter(iterable)
done_looping = False
while not done_looping:
try:
item = next(iterator)
except StopIteration:
done_looping = True
else:
action_to_do(item)
注意:迭代器是可迭代对象,但是它们没有可迭代对象所具有的属性;迭代器唯一有用的地方是将其传递给内置的next函数,或者对其进行循环遍历:
>>>next(iterator)
1
>>>list(iterator)
[2,3,5,7]
况且迭代器只可以遍历循环一次;