[在同时为循环编写python吗?

问题描述 投票:2回答:2

我想知道,出于教育目的,是否有可能将python中的所有for循环重写为while循环。从理论上讲,if和while是流量控制的最小集合。

在SO周围搜索显示了有关基于循环Converting for loops to while loops in python的范围的问题,这显然是可行的,因为它公开了开始和结束索引。那其他forms of for loops呢?例如,如何遍历各种形式的列表呢?

python control-flow
2个回答
5
投票

是,可以这样做,但这可能不是一个好主意(有人可能会说是unpythonic。]

for循环在支持iterator protocol的对象上进行迭代时,您可以显式模仿其动作,并将其转换为while循环。例如,>

l = [1, 2, 3]                                                                                                                                                                                          

it = iter(l)                                                                    
while True:                                                                     
    try:                                                                        
        print next(it)                                                       
    except StopIteration:                                                       
        break                  

我认为这很丑陋:-)


3
投票

要添加到@AmiTavory的答案中-问题是,在一般情况下,您不知道生成器将产生多少个项目,这就是为什么在使用while循环时必须除StopIteration之外的原因。考虑以下示例:

© www.soinside.com 2019 - 2024. All rights reserved.