我想知道,出于教育目的,是否有可能将python中的所有for循环重写为while循环。从理论上讲,if和while是流量控制的最小集合。
在SO周围搜索显示了有关基于循环Converting for loops to while loops in python的范围的问题,这显然是可行的,因为它公开了开始和结束索引。那其他forms of for loops呢?例如,如何遍历各种形式的列表呢?
是,可以这样做,但这可能不是一个好主意(有人可能会说是unpythonic。]
for
循环在支持iterator protocol的对象上进行迭代时,您可以显式模仿其动作,并将其转换为while
循环。例如,>
l = [1, 2, 3] it = iter(l) while True: try: print next(it) except StopIteration: break
我认为这很丑陋:-)
要添加到@AmiTavory的答案中-问题是,在一般情况下,您不知道生成器将产生多少个项目,这就是为什么在使用while循环时必须除StopIteration
之外的原因。考虑以下示例: