Python中for后接else的语法使用
作者:weijian001 发布时间:2023-07-08 15:28:47
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")
来源:https://blog.csdn.net/wj1066/article/details/81913696
猜你喜欢
- 如下代码,限制某个函数在某个时间段的调用次数,灵感来源:python装饰器-限制函数调用次数的方法(10s调用一次) 欢迎访问原博客中指定的
- 本文说明向外扩展数据库系统的两个选项,从而实现更高的可扩展性:水平数据划分和垂直数据划分当我提到向外扩展数据库系统时,我实际上只是讨论对数据
- 讲这个方法之前,我们应该先了解下插入节点时浏览器会做什么。在浏览器中,我们一旦把节点添加到document.body(或者其他节点)中,页面
- 如下图,我们在做图片logo列表的时候通常是用li标签来实现。html:<ul class="logolist&q
- 本文实例讲述了JavaScript使用正则表达式获取全部分组内容的方法。分享给大家供大家参考,具体如下:1. 需要使用正则表达式的exec2
- function getElementsByClassName(elem_name,elem_tags) { //elem_name:查询的
- 还是一个关于checkbox的一个普通的效果,就是根据你勾选的checkbox,列出你选择了哪些值演示代码:<!DOCTYPE htm
- 1.建立设计规范的意义 建立设计文档的根本目的
- 昨天给公司服务器重做了一下系统,遇到Asp附件无法上传,之前服务器上使用好好的,怎么重做了就不正常了,于是一番google,baidu,下面
- Microsoft建立了一种既灵活又强大的安全管理机制,它能够对用户访问SQL Server服务器系统和数据库的安全进行全面地管理。按照本文
- Q. How can I restrict access to my SQL Server so that it only allows c
- em 和 strong 的区别,可以从三个层次上来谈。首先看 HTML 4.01 中的说明:EM: Indicates emphasis.S
- 这个分页使用的是0游标,也就是Rs.Open Sql,Conn,0,1。但是感觉也快不了多少,10万条数据的分页时间300多豪秒之间。代码如
- 可在图片连接后面加上宽和高,如:width="150" height="50"<h
- 对于经常需要表格头部不东,而列表可以滚动,多用于数据比较多的情况,方便查看<!DOCTYPE HTML PUBLIC "-/
- 今天从网上学习了有关SQL注入的基本技能。SQL注入的重点就是构造SQL语句,只有灵活的运用SQL 语句才能构造出牛比的注入字符串。学完之后
- 目前,SQL Server数据库有几个版本都在使用中,比如 7.0, 2000和2005,那么,在现实的工作和学习中,你很有可能会需要从以前
- requests是常用的请求库,不管是写爬虫脚本,还是测试接口返回数据等。都是很简单常用的工具。这里就记录一下如何用requests发送js
- 最终效果前言这是最近在学qt这个东西,然后又学会了调用api,然后就想了用pyqt5做一个GUI界面,后期也可以打包分享给其他人使用,所以就
- 在向大家详细介绍Linux mysql之前,首先让大家了解下Linux mysql,然后全面介绍Linux mysql,希望对大家有用。1.