1. 含义

Python 中的循环与 else 有以下两种形式

  • for … else
  • while … else

Python中的 for、while 循环都有一个可选(optional)的 else 分支(类似 if语句和 try 语句那样),在循环迭代正常完成之后执行。

所谓循环迭代正常完成,一般是指(所需要迭代处理的对象遍历完毕,且中间没有异常发生):

  • 没有执行 break
  • 没有执行 return
  • 循环的中间没有异常发生

注:纵然有 continue 语句,循环也是正常完成的;

In [1]: for i in range(5):
...: if i & 1 == 0:
...: continue
...: print(i)
...: else:
...: print('Iteratived over everything')
...:
1
3
Iteratived over everything
  • 尽管循环所迭代的序列是空的,else分支依然会被执行,毕竟循环仍然是正常完成的。
>>> for i in []:
... print(i)
... else:
... print('Still iterated over everything (i.e. nothing)')
...
Still iterated over everything (i.e. nothing)

2. 思考

如此设计的意义何在呢?

else 语句在循环中的一个常见使用案例是实现循环查找。假说你在查找一个满足特定条件的项目(item),同时需要进行附加处理,或者在未发现可接受的值时生成一个错误:

for x in data:
if meets_cond(x):
break
...
else:
....

没有 else 语句的话,你需要设置一个标志,然后在后面对其检测,以此确定是否存在满足条件的值。

found = False
for x in data:
if meets_cond(x):
found = True
if not found:
...

Python中循环语句中的else用法

Python 中的循环与 else的更多相关文章

  1. Python之for循环与while循环

    for语句格式for x in range(起始值,结束值,步幅) 执行语句输出0,100各个数字for i in range(0,101) print(i)输出0,100的偶数for i in ra ...

  2. thinkphp模板中for循环与switch的使用

    1.for用法 <for start="开始值" end="结束值" comparison="" step="步进值&quo ...

  3. python while循环与for循环

    今天刚看了一下python的while和for循环,所以打算记录一下: while语句是python中的循环条件语句,while 判断条件 : pass break 例如: i = 1 sum = 1 ...

  4. Python基础(十四):while循环与break、continue关键字

    前面我们已经学习了for循环,今天再带着大家讲述一下while循环.那么for循环和while循环,到底有什么区别呢? Python中for循环和while循环本质上是没有区别的,但是在实际应用上,针 ...

  5. 关于Python中的for循环控制语句

    #第一个:求 50 - 100 之间的质数 import mathfor i in range(50, 100 + 1):    for j in range(2, int(math.sqrt(i)) ...

  6. python中的else语句

    python语言和其它语言一样在支持else语句,通常else语句和if语句合用,完成程序的分支选择功能. 例如如下打印学成成绩代码: score = int(input("请输入成绩:&q ...

  7. while + else 使用,while死循环与while的嵌套,for循环基本使用,range关键字,for的循环补充(break、continue、else) ,for循环的嵌套,基本数据类型及内置方法

    今日内容 内容概要 while + else 使用 while死循环与while的嵌套 for循环基本使用 range关键字 for的循环补充(break.continue.else) for循环的嵌 ...

  8. 详解Python中的循环语句的用法

    一.简介 Python的条件和循环语句,决定了程序的控制流程,体现结构的多样性.须重要理解,if.while.for以及与它们相搭配的 else. elif.break.continue和pass语句 ...

  9. python中的常用方法

    1.os模块的常用方法: >>> import os >>> >>> myFiles = ['accounts.txt', 'details.cs ...

随机推荐

  1. 浏览器缓存机制(HTTP缓存机制)

    其机制是根据HTTP报文的缓存标识进行的. 过程:浏览器发起HTTP请求 – 服务器响应该请求.那么浏览器第一次向服务器发起该请求后拿到请求结果,会根据响应报文中HTTP头的缓存标识,决定是否缓存结果 ...

  2. 如何在Eclipse中创建Web服务器

    使用Eclipse开发Web项目时,需要先配置Web服务器,如果已经配置好Web服务器,就不需要再重新配置了.也就是说,本节的内容不是开发每个项目时,都必须经过的步骤.创建Web服务器的具体步骤如下: ...

  3. Unity引擎GUI之Canvas和EventSystem

    最近想写一套关于UGUI所有控件的基础使用教程系列,主要是根据本人的使用心得以及部分测试附带字面翻译来写的,所以其中可能难以避免会有不正确的地方. 好了进入主题,既然是第一篇,我觉得我有必要先介绍一下 ...

  4. Microsoft SQL Server 2005技术内幕:T-SQL查询笔记

    logical operation:基于微软查询处理概念模型的逻辑操作.例如,联接运算符的physical operation属性表示联接算法(nested loops,merge ,hash)物理运 ...

  5. 释放Win8.1 WinSxS冗余更新,微软Dism来解决

    命令提示符(管理员) dism /online /Cleanup-Image /StartComponentCleanup /ResetBase 有些文章不建议使用 /RestBase,可能会有风险.

  6. Object::connect: No such slot (QT槽丢失问题)

    1.看看你的类声明中有没有Q_OBJECT,并继承public QMainWindow{ 例如: class CPlot: public QMainWindow{ Q_OBJECT 2.你声明的函数要 ...

  7. Type inference

    Type inference refers to the automatic detection of the data type of an expression in a programming ...

  8. Django 路由视图FBV/CBV

    路由层  url路由层结构 from django.conf.urls import url from django.contrib import admin from app01 import vi ...

  9. scrapy爬虫--10分钟入门

    # -*- coding: utf-8 -*- # @Time : 2019/4/18 9:10 # @Author : wujf # @Email : 1028540310@qq.com # @Fi ...

  10. vue 导航菜单默认子路由

    export default new Router({ routes: [ { path: '/', name: 'index', component: index, children: [ { pa ...