python循环迭代_Python中循环迭代的重做
不,Python不直接支持redo。有一个选项可能会让嵌套循环变得非常糟糕,比如:for x in mylist:
while True:
...
if shouldredo:
continue # continue becomes equivalent to redo
...
if shouldcontinue:
break # break now equivalent to continue on outer "real" loop
...
break # Terminate inner loop any time we don't redo
但这意味着,在“redoable”块中,不诉诸异常、标记变量或将整个东西打包为函数,就不可能break使用外部循环。
或者,使用一个直接的while循环来复制for循环为您做的事情,显式地创建和推进迭代器。它有自己的问题(continue实际上是redo默认情况下,您必须显式地为“real”continue推进迭代器),但它们并不可怕(只要您使用continue注释,以表明您打算redo对continue,以避免混淆维护者)。要允许redo和其他循环操作,您需要执行以下操作:# Create guaranteed unique sentinel (can't use None since iterator might produce None)
sentinel = object()
iterobj = iter(mylist) # Explicitly get iterator from iterable (for does this implicitly)
x = next(iterobj, sentinel) # Get next object or sentinel
while x is not sentinel: # Keep going until we exhaust iterator
...
if shouldredo:
continue
...
if shouldcontinue:
x = next(iterobj, sentinel) # Explicitly advance loop for continue case
continue
...
if shouldbreak:
break
...
# Advance loop
x = next(iterobj, sentinel)
上面的操作也可以用try/except StopIteration:来完成,而不是用一个sentinel来包装两个参数next,但是用它来包装整个循环可能会有其他StopIteration源被捕获的风险,并且在一个有限的范围内对内部和外部的next调用都正确地执行这一操作会非常难看(比基于sentinel的方法更糟糕)。
python循环迭代_Python中循环迭代的重做相关推荐
- python中for循环流程图_Python中的迭代遍历 for in
遍历就是从头到尾依次从列表中获取数据,在循环体内部针对每一个元素,执行相同的操作. 在Python中为了提高列表的遍历效率,专门提供的迭代(iteration)遍历. 使用 for...in 就能够在 ...
- python中迭代_python中的迭代什么意思
python中的迭代什么意思 发布时间:2020-09-21 12:33:45 来源:亿速云 阅读:67 作者:Leah 这期内容当中小编将会给大家带来有关python中的迭代什么意思,文章内容丰富且 ...
- python反向迭代器_Python中对象迭代与反迭代的技巧总结
一.如何实现可迭代对象和迭代器对象? 实际案例 某软件要求从网络抓取各个城市气味信息,并其次显示: 北京: 15 ~ 20 天津: 17 ~ 22 长春: 12 ~ 18 ...... 如果一次抓取所 ...
- python可迭代_python中可迭代对象有哪些
Python中的可迭代对象有哪些?Python中的可迭代对象有:列表.元组.字典.字符串:常结合for循环使用: 判断一个对象是不是可迭代对象:from collections import Iter ...
- python 元组遍历_Python中的for循环:元组、列表、字典的遍历和相互转化
Python for循环可以遍历任何序列的项目,如列表.字符串.元组.字典.集合等序列类型. 语法: for循环的语法格式如下: for iterating_var in sequence:state ...
- java循环遍历_JAVA中循环遍历list有三种方式
转自:https://blog.csdn.net/changjizhi1212/article/details/81036509 JAVA中循环遍历list有三种方式for循环.增强for循环(也就是 ...
- python生成器迭代_python中的生成器和迭代器
前言: 我们来了解一下什么是python中生成器.了解一下python生成器是什么,以及生成器在python编程之中能起到什么样的作用. 定义: 生成器和迭代器 通过列表生成式,我们可以直接创建一个列 ...
- python 可迭代对象是什么_python中可迭代对象指的是什么
python中可迭代对象指的是什么 发布时间:2020-07-20 11:19:38 来源:亿速云 阅读:91 作者:清晨 小编给大家分享一下python中可迭代对象指的是什么,相信大部分人都还不怎么 ...
- python中可迭代对象是什么意思_python中可迭代对象是什么
python中可迭代对象是:存储了元素的一个容器对象,且容器中的元素可以通过"__iter__( )"方法或"__getitem__( )"方法访问.可迭代对象 ...
最新文章
- cas+shiro+spring 单点登录
- 线程及同步的性能 – 线程池/ ThreadPoolExecutors/ ForkJoinPool
- java 文件 剪切_总结java中文件拷贝剪切的5种方式-JAVA IO基础总结第五篇
- 用Backbone.js创建一个联系人管理系统(一)
- BUG总结——记一次sql查询未按照想要的次序返回
- 窗体控件绑定数组 c# 1613698204
- 3003 基于二叉链表的二叉树左右节点的交换 附思路
- .NET_.NET Copy Web 部署概念_01-3
- CN笔记:第二章 物理层
- 微软面试4、在二元树中找出和为某一值的所有路径
- 网络_远程开机(ubuntu)
- 现代通信技术之分组交换技术
- 【Axure原型分享】自动编号的中继器表格
- 漂亮得不像触控板,全新 Magic Trackpad 2
- 【单片机小白屑作】基于清翔QX-MCS51单片机的精简版定时炸弹
- java安装_Java开发人员应该知道的7种新工具
- JAVA :一张纸厚0.5mm //0.0005m,折叠多少次,厚度会超过珠穆朗玛峰?(8848.43m)
- 阿里免费网盘teambition使用初体验
- rsync 错误排除与修复
- 16. FizzBuzz
热门文章
- 线程和std::shared_ptr智能指针使用
- SLS控制台内嵌操作指南
- 作为后端开发如何设计数据库系列文章 设计SaaS系统表结构
- 谁顶住双11的世界级流量洪峰?神龙架构负责人等9位大牛现场拆解阿里秘籍
- QPS 提升60%,揭秘阿里巴巴轻量级开源 Web 服务器 Tengine 负载均衡算法
- 【SpringCloud-Alibaba系列教程】14.一文教你入门RocketMQ
- JetBrains发布两项重要更新:基于IDE的远程开发解决方案、轻量级编辑器Fleet
- 全球企业KVM开源贡献榜发布,腾讯云、华为、阿里巴巴等入围
- 华为庞鑫:闪存3.0时代,四大变化激发全闪存数据中心潜能释放
- VMware为全球数字化基础架构提供原生安全