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 调用VC++的动态链接库(DLL)
Sep 06 Python
利用django如何解析用户上传的excel文件
Jul 24 Python
python读取LMDB中图像的方法
Jul 02 Python
python+selenium实现自动抢票功能实例代码
Nov 23 Python
Pycharm运行加载文本出现错误的解决方法
Jun 27 Python
int在python中的含义以及用法
Jun 27 Python
Flask-WTF表单的使用方法
Jul 12 Python
感知器基础原理及python实现过程详解
Sep 30 Python
Python将列表中的元素转化为数字并排序的示例
Dec 25 Python
python GUI库图形界面开发之PyQt5拖放控件实例详解
Feb 25 Python
服务器端jupyter notebook映射到本地浏览器的操作
Apr 14 Python
Python查找算法的实现 (线性、二分,分块、插值查找算法)
Apr 24 Python
python源码剖析之PyObject详解
Python3 如何开启自带http服务
May 18 #Python
安装pytorch时报sslerror错误的解决方案
Pytorch 如何实现LSTM时间序列预测
pytorch实现ResNet结构的实例代码
pytorch常用数据类型所占字节数对照表一览
May 17 #Python
python使用tkinter实现透明窗体上绘制随机出现的小球(实例代码)
You might like
神族 Protoss 历史背景
2020/03/14 星际争霸
咖啡豆要不要放冰箱的原因
2021/03/04 冲泡冲煮
360通用php防护代码(使用操作详解)
2013/06/18 PHP
php+ajax实现仿百度查询下拉内容功能示例
2017/10/20 PHP
php探针不显示内存解决方法
2019/09/17 PHP
javaScript中slice函数用法实例分析
2015/06/08 Javascript
jquery衣服颜色选取插件效果代码分享
2015/08/28 Javascript
JavaScript中字面量与函数的基本使用知识
2015/10/20 Javascript
详解vue-router2.0动态路由获取参数
2017/06/14 Javascript
原生JS实现循环Nodelist Dom列表的4种方式示例
2018/02/11 Javascript
jquery ajaxfileuplod 上传文件 essyui laoding 效果【防止重复上传文件】
2018/05/26 jQuery
微信小程序6位或多位验证码密码输入框功能的实现代码
2018/05/29 Javascript
JavaScript遍历查找数组中最大值与最小值的方法示例
2019/05/24 Javascript
后台使用freeMarker和前端使用vue的方法及遇到的问题
2019/06/13 Javascript
JavaScript中的ES6 Proxy的具体使用
2019/06/16 Javascript
Node.js API详解之 readline模块用法详解
2020/05/22 Javascript
addEventListener()和removeEventListener()追加事件和删除追加事件
2020/12/04 Javascript
Vue仿百度搜索功能
2020/12/28 Vue.js
详解基于element的区间选择组件校验(交易金额)
2021/01/07 Javascript
[57:50]DOTA2上海特级锦标赛主赛事日 - 4 胜者组决赛Secret VS Liquid第二局
2016/03/05 DOTA
python实现问号表达式(?)的方法
2013/11/27 Python
Python中的__SLOTS__属性使用示例
2015/02/18 Python
Python新手们容易犯的几个错误总结
2017/04/01 Python
DataFrame中去除指定列为空的行方法
2018/04/08 Python
Python Learning 列表的更多操作及示例代码
2018/08/22 Python
python 读取文件并把矩阵转成numpy的两种方法
2019/02/12 Python
美国玛丽莎收藏奢华时尚商店:Marissa Collections
2016/11/21 全球购物
联想瑞士官方网站:Lenovo Switzerland
2017/11/19 全球购物
学校交通安全责任书
2014/08/25 职场文书
作风建设年活动总结
2014/08/27 职场文书
2014年9.18纪念日演讲稿
2014/09/14 职场文书
2015年党员干部承诺书
2015/01/21 职场文书
小班教师个人总结
2015/02/05 职场文书
以权谋私检举信范文
2015/03/02 职场文书
Python趣味挑战之教你用pygame画进度条
2021/05/31 Python
GO语言字符串处理函数之处理Strings包
2022/04/14 Golang