开发者社区> 问答> 正文

python for循环嵌套时,内层循环不执行是为什么?

python for循环嵌套时,内层循环不执行是为什么?

展开
收起
游客ahv54x37wvm7u 2021-11-01 21:11:09 1114 0
1 条回答
写回答
取消 提交回答
  • 当把生成器放在所有循环的外层时

    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生成器,就像第二个例子当中的那样。

    2021-11-01 21:11:31
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载