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创建和使用字典实例详解
Nov 01 Python
Python使用函数默认值实现函数静态变量的方法
Aug 18 Python
跟老齐学Python之玩转字符串(2)
Sep 14 Python
python脚本实现分析dns日志并对受访域名排行
Sep 18 Python
Python while、for、生成器、列表推导等语句的执行效率测试
Jun 03 Python
各种Python库安装包下载地址与安装过程详细介绍(Windows版)
Nov 02 Python
Python基础学习之函数方法实例详解
Jun 18 Python
爬虫代理池Python3WebSpider源代码测试过程解析
Dec 20 Python
Android Q之气泡弹窗的实现示例
Jun 23 Python
Django实现内容缓存实例方法
Jun 30 Python
Pytorch1.5.1版本安装的方法步骤
Dec 31 Python
利用python实时刷新基金估值(摸鱼小工具)
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中使用sockets:从新闻组中获取文章
2006/10/09 PHP
PHP实现实时生成并下载超大数据量的EXCEL文件详解
2017/10/23 PHP
PHP文件后缀不强制为.php方法
2019/03/31 PHP
php常用字符串查找函数strstr()与strpos()实例分析
2019/06/21 PHP
yii2.0框架数据库操作简单示例【添加,修改,删除,查询,打印等】
2020/04/13 PHP
学习ExtJS 访问容器对象
2009/10/07 Javascript
Google官方支持的NodeJS访问API,提供后台登录授权
2014/07/29 NodeJs
Ajax局部更新导致JS事件重复触发问题的解决方法
2014/10/14 Javascript
jQuery插件Tooltipster实现漂亮的工具提示
2015/04/12 Javascript
详细分析JavaScript变量类型
2015/07/08 Javascript
jQuery 利用$.ajax 时获取原生XMLHttpRequest 对象的方法
2016/08/25 Javascript
基于jPlayer三分屏的制作方法
2016/12/21 Javascript
Bootstrap导航简单实现代码
2017/03/06 Javascript
快速使用node.js进行web开发详解
2017/04/26 Javascript
使用puppeteer爬取网站并抓出404无效链接
2018/12/20 Javascript
小程序二次贝塞尔曲线实现购物车商品曲线飞入效果
2019/01/07 Javascript
微信小程序开发之map地图组件定位并手动修改位置偏差
2019/08/17 Javascript
vue.js实现图书管理功能
2019/09/24 Javascript
Python模块学习 datetime介绍
2012/08/27 Python
把大数据数字口语化(python与js)两种实现
2013/02/21 Python
Python中的zip函数使用示例
2015/01/29 Python
在Python中使用pngquant压缩png图片的教程
2015/04/09 Python
Python中使用items()方法返回字典元素对的教程
2015/05/21 Python
matplotlib.pyplot绘图显示控制方法
2019/01/15 Python
Python实现AI换脸功能
2020/04/10 Python
美国修容界大佬创建的个人美妆品牌:Kevyn Aucoin Beauty
2018/12/12 全球购物
机械设计制造及其自动化专业求职信
2014/06/17 职场文书
2014年护士个人工作总结
2014/11/11 职场文书
2014年污水处理厂工作总结
2014/12/19 职场文书
工程技术员岗位职责
2015/04/11 职场文书
学校会议通知范文
2015/04/15 职场文书
亮剑观后感500字
2015/06/05 职场文书
2015中秋祝酒词
2015/08/12 职场文书
大学生村官驻村工作心得体会
2016/01/23 职场文书
《百分数的认识》教学反思
2016/02/19 职场文书
JavaScript实现复选框全选功能
2021/04/11 Javascript