美文网首页
python for循环嵌套时,内层循环不执行的问题

python for循环嵌套时,内层循环不执行的问题

作者: 太克斯 | 来源:发表于2020-03-02 01:44 被阅读0次

    https://stackoverflow.com/questions/11569535/python-nested-loop-with-generators-does-not-work-in-some-cases
    这个文章解释的很清楚

    当把生成器放在所有循环的外层时

    a = (x for x in range(3))
    b = (x for x in range(2))
    for i in a: 
        for j in b:`
            print (i,j)
    

    得到的结果

    (0, 0)
    (0, 1)
    

    但是如果把生成器放在循环当中

    for i in (x for x in range(3)):
        for j in (x for x in range(2)):
            print (i,j)
    

    结果就是正常的

    (0, 0)
    (0, 1)
    (1, 0)
    (1, 1)
    (2, 0)
    (2, 1)
    

    这是因为当a,b生成器在放在循环外层的时候,b生成器在外部循环第一次运行的时候,就已经用尽了,随后的迭代中,内部循环使用的都是空的b,就像

    for i in ()
    

    所以内部循环实际上只会在外部循环第一次运行的时候被循环一次,后面看起来就像没有被执行一样,实际是因为此时b为空了,所以要想循环正常运行,需要在内层循环运行的每次,都创建b生成器,就像第二个例子当中的那样。

    相关文章

      网友评论

          本文标题:python for循环嵌套时,内层循环不执行的问题

          本文链接:https://www.haomeiwen.com/subject/vdxjkhtx.html