• 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循环

  • 相关阅读:
    有关 PHP 和 MySQL 时区的一点总结
    PHP CLI模式下的多进程应用
    Linux编程之:五个常见PHP数据库问题
    用php定制404错误页面 并发信通知管理员
    配置PHP站点安全综合教程
    新手必看的PHP学习入门的一些基础知识
    彻底杜绝PHP的session cookie错误
    专家预言:PHP将比Java更受开发人员欢迎
    PHP企业级应用之WebService续篇
    清除 数据库 日志 以 Db_Test 为例
  • 原文地址:https://www.cnblogs.com/1314h/p/13947615.html
Copyright © 2020-2023  润新知