• for--else大坑问题


    这是一次偶然发现的问题,做一下记录

    a = [{'w0', 'b0', 'v0'}, {'w1', 'b1', 'v1'}, {'w2', 'b2', 'v2'}]
    
    for i in a:
        for j in i:
            print(j, '我是内循环')
        else:
            print(j, '我是else')

    上面这个代码大家都知道他会内循环完执行else,下面是运行结果

    b0 我是内循环
    w0 我是内循环
    v0 我是内循环
    v0 我是else
    v1 我是内循环
    b1 我是内循环
    w1 我是内循环
    w1 我是else
    w2 我是内循环
    b2 我是内循环
    v2 我是内循环
    v2 我是else
    
    进程已结束,退出代码 0

    但是当我们在else里加判断结束语句

    for i in a:
        for j in i:
            print(j, '我是内循环')
        else:
            print(j, '我是else')
            if True:
                break

    执行结果如下:

    w0 我是内循环
    b0 我是内循环
    v0 我是内循环
    v0 我是else
    
    进程已结束,退出代码 0

    也就是说for--else的else语句里面break结束的是外层循环

    那么如果我们在else里进行for--else嵌套,else所break的是哪一个呢?

    a = [{'w0', 'b0', 'v0'}, {'w1', 'b1', 'v1'}, {'w2', 'b2', 'v2'}]
    
    
    for i in a:
    print(i, '我是最外层循环,top')
    for j in i:
    print(j, '我是内循环')
    else:
    for k in a:
    print(k, '我是else内内循环')
    else:
    for v in k:
    print(v, '我是else内内内循环')
    else:
    if True:
    break

    输出结果:

    {'v0', 'b0', 'w0'} 我是最外层循环,top
    v0 我是内循环
    b0 我是内循环
    w0 我是内循环
    {'v0', 'b0', 'w0'} 我是else内内循环
    {'v1', 'w1', 'b1'} 我是else内内循环
    {'w2', 'v2', 'b2'} 我是else内内循环
    w2 我是else内内内循环
    v2 我是else内内内循环
    b2 我是else内内内循环
    
    进程已结束,退出代码 0

    总结就是for循环里不管内嵌循环多少层,for--else里面的else语句如果break那么都是结束最外层的那个for循环

  • 相关阅读:
    还记得那种 喜欢到不行的感觉么?
    从点到面,再从面到点
    草珊瑚的常见移动网站布局
    草珊瑚的CSS基础
    表驱动编程
    如果一切需要重学,2014年应该学哪些技术?
    揭开Makefile的神秘面纱
    VIM资源
    VIM跳转技巧
    前女友究竟是一种怎样的存在?
  • 原文地址:https://www.cnblogs.com/1314h/p/13947615.html
Copyright © 2020-2023  润新知