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获取GY-85九轴模块信息示例
Dec 05 Python
详解Django中的ifequal和ifnotequal标签使用
Jul 16 Python
python实现SOM算法
Feb 23 Python
python2.7+selenium2实现淘宝滑块自动认证功能
Feb 24 Python
python中验证码连通域分割的方法详解
Jun 04 Python
Python替换月份为英文缩写的实现方法
Jul 15 Python
pytorch 自定义卷积核进行卷积操作方式
Dec 30 Python
Django模板获取field的verbose_name实例
May 19 Python
python如何从键盘获取输入实例
Jun 18 Python
Django ModelForm组件原理及用法详解
Oct 12 Python
Python基于tkinter canvas实现图片裁剪功能
Nov 05 Python
Python 正则模块详情
Nov 02 Python
python源码剖析之PyObject详解
Python3 如何开启自带http服务
May 18 #Python
安装pytorch时报sslerror错误的解决方案
Pytorch 如何实现LSTM时间序列预测
pytorch实现ResNet结构的实例代码
pytorch常用数据类型所占字节数对照表一览
May 17 #Python
python使用tkinter实现透明窗体上绘制随机出现的小球(实例代码)
You might like
星际玩家的三大定律
2020/03/04 星际争霸
关于php fread()使用技巧
2010/01/22 PHP
PHP屏蔽蜘蛛访问代码及常用搜索引擎的HTTP_USER_AGENT
2013/03/06 PHP
Codeigniter中禁止A Database Error Occurred错误提示的方法
2014/06/12 PHP
深入解析Laravel5.5中的包自动发现Package Auto Discovery
2017/09/13 PHP
thinkphp5框架实现的自定义扩展类操作示例
2019/05/16 PHP
PHP大文件及断点续传下载实现代码
2020/08/18 PHP
javascript firefox 自动加载iframe 自动调整高宽示例
2013/08/27 Javascript
返回页面顶部top按钮通过锚点实现(自写)
2013/08/30 Javascript
js传中文参数controller里获取参数乱码问题解决方法
2014/01/03 Javascript
JS设置获取cookies的方法
2014/01/26 Javascript
Extjs表单常见验证小结
2014/03/07 Javascript
JavaScript中的Math 使用介绍
2014/04/21 Javascript
JavaScript二维数组实现的省市联动菜单
2014/05/08 Javascript
浅谈 jQuery 事件源码定位问题
2014/06/18 Javascript
Vue数据驱动模拟实现1
2017/01/11 Javascript
Javascript创建类和对象详解
2017/05/31 Javascript
JS实现搜索关键词的智能提示功能
2017/07/07 Javascript
javaScript日期工具类DateUtils详解
2017/12/08 Javascript
Angular resolve基础用法详解
2018/10/03 Javascript
vue项目动态设置页面title及是否缓存页面的问题
2018/11/08 Javascript
微信小程序实现点击效果
2019/06/21 Javascript
nodejs对mongodb数据库的增加修删该查实例代码
2020/01/05 NodeJs
python分批定量读取文件内容,输出到不同文件中的方法
2018/12/08 Python
python自定义线程池控制线程数量的示例
2019/02/22 Python
PurCotton全棉时代官网:100%天然棉花生产的生活护理用品
2016/11/18 全球购物
美国爆米花工厂:The Popcorn Factory
2019/09/14 全球购物
Android面试题附答案
2014/12/08 面试题
最新教师自我评价分享
2013/11/12 职场文书
银行出纳岗位职责
2013/11/25 职场文书
教师申诉制度
2014/01/29 职场文书
副董事长岗位职责
2014/04/02 职场文书
陕西导游词
2015/02/04 职场文书
党课主持词大全
2015/06/30 职场文书
2016幼儿园新学期寄语
2015/12/03 职场文书
解决Pytorch修改预训练模型时遇到key不匹配的情况
2021/06/05 Python