Python中for后接else的语法使用


Posted in Python onMay 18, 2021

0、背景

今天看到了一个比较诡异的写法,for后直接跟了else语句,起初还以为是没有缩进好,查询后发现果然有这种语法,特此分享。之前写过c++和Java,在for后接else还是第一次见。

1、试验

# eg1
import numpy as np
for i in np.arange(5):
    print i
else:
    print("hello?")
# 0
# 1
# 2
# 3
# 4
# hello?

可以发现,在for正常结束后,break中的语句进行了执行。

# eg2
import numpy as np
for i in np.arange(5):
    print i
    if (i == 3):
        break
else:
    print("hello?")
# 0
# 1
# 2
# 3

在这个例子当中,i==3的时候break出了循环,然后else当中的语句就没有执行。

2、总结

总结起来比较简单,如果for循环正常结束,else中语句执行。如果是break的,则不执行。

工程性代码写的比较少,暂时没有想到很好的场景,为了不对其他同学造成干扰,这种形式还是少些一点较好。

官方文档也有解释:

When the items are exhausted (which is immediately when the sequence is empty), the suite in the else clause, if present, is executed, and the loop terminates.

A break statement executed in the first suite terminates the loop without executing the else clause's suite. A continue statement executed in the first suite skips the rest of the suite and continues with the next item, or with the else clause if there was no next item.

https://docs.python.org/2/reference/compound_stmts.html#the-for-statement

补充:python里for和else的搭配

用找质数作为代码示例

for i in range(2,10):
    for n in range(2,i):
        if i % n == 0:
            #print(i, '=', n, '*', i//n)
            break
    else:
        print('found it %s' %i)

注意:这里的 else 并不属于 if 代码块

根据官方文档的解释理解的意思:当迭代的对象迭代完并为空时,位于else的语句将会执行,而如果在for循环里有break时,则会直接终止循环,并不会执行else里的代码

写一个简单例子,用来辅助理解

for i in range(10):
    if i == 7:
        print('found it %s'%i)
        break
else:
    print('not found')

可以先运行代码,看一下运行结果,然后将代码块里的break注释掉再运行一遍,与第一次运行的结果进行比较,就会发现不同

补充:python中for—else的用法,执行完for执行else

结束for循环后执行else

for i in range(5):
     print(i)
else:
    print("打印else")

Python中for后接else的语法使用

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python集合类型用法分析
Apr 08 Python
利用Python的Django框架中的ORM建立查询API
Apr 20 Python
Python编程中的异常处理教程
Aug 21 Python
Python基础篇之初识Python必看攻略
Jun 23 Python
Python 爬虫之超链接 url中含有中文出错及解决办法
Aug 03 Python
python实现AES加密解密
Mar 28 Python
Python3.5 Pandas模块之DataFrame用法实例分析
Apr 23 Python
python实现列表中最大最小值输出的示例
Jul 09 Python
python已协程方式处理任务实现过程
Dec 27 Python
离线状态下在jupyter notebook中使用plotly实例
Apr 24 Python
基于tensorflow for循环 while循环案例
Jun 30 Python
PyQt5结合matplotlib绘图的实现示例
Sep 15 Python
python源码剖析之PyObject详解
Python3 如何开启自带http服务
May 18 #Python
安装pytorch时报sslerror错误的解决方案
Pytorch 如何实现LSTM时间序列预测
pytorch实现ResNet结构的实例代码
pytorch常用数据类型所占字节数对照表一览
May 17 #Python
python使用tkinter实现透明窗体上绘制随机出现的小球(实例代码)
You might like
一个php作的文本留言本的例子(六)
2006/10/09 PHP
php将fileterms函数返回的结果变成可读的形式
2011/04/21 PHP
非常全面的php日期时间运算汇总
2015/11/04 PHP
Yii使用migrate命令执行sql语句的方法
2016/03/15 PHP
PHP 实现浏览记录并按日期分组
2017/05/11 PHP
PHP+Apache环境中如何隐藏Apache版本
2017/11/24 PHP
Yii2框架实现登陆添加验证码功能示例
2018/07/12 PHP
[原创]保存的js无法执行的解决办法
2007/02/25 Javascript
jQuery的deferred对象使用详解
2011/08/20 Javascript
2012年开发人员的16款新鲜的jquery插件体验分享
2012/12/28 Javascript
JS注释所产生的bug 即使注释也会执行
2013/11/19 Javascript
在jquery中combobox多选的不兼容问题总结
2013/12/24 Javascript
jQuery基础_入门必看知识点
2016/07/04 Javascript
jQuery 常见小例汇总
2016/12/14 Javascript
详解nodejs模板引擎制作
2017/06/14 NodeJs
vue+springboot实现项目的CORS跨域请求
2018/09/05 Javascript
node错误处理与日志记录的实现
2018/12/24 Javascript
vue模块拖拽实现示例代码
2019/03/09 Javascript
百度小程序自定义通用toast组件
2019/07/17 Javascript
Vue实现计算器计算效果
2020/08/17 Javascript
[00:52]黑暗之门更新 新英雄孽主驾临DOTA2
2016/08/24 DOTA
Python实现115网盘自动下载的方法
2014/09/30 Python
Windows下为Python安装Matplotlib模块
2015/11/06 Python
详解supervisor使用教程
2017/11/21 Python
利用python实现微信头像加红色数字功能
2018/03/26 Python
python 矩阵增加一行或一列的实例
2018/04/04 Python
Python最小二乘法矩阵
2019/01/02 Python
对python3 Serial 串口助手的接收读取数据方法详解
2019/06/12 Python
python实现简单颜色识别程序
2020/02/19 Python
pyinstaller打包成无控制台程序时运行出错(与popen冲突的解决方法)
2020/04/15 Python
详解Python调用系统命令的六种方法
2021/01/28 Python
个人自我评价分享
2013/12/20 职场文书
党员干部观看《周恩来四个昼夜》思想汇报
2014/09/10 职场文书
会议欢迎词范文
2015/01/27 职场文书
2015年社区居委会工作总结
2015/05/18 职场文书
Redis 哨兵机制及配置实现
2022/03/25 Redis