python - 如何重置迭代集合的循环?
问题描述
如何重置迭代集合的循环?迭代列表的常见答案是重置您用于访问列表的索引,但是集合不支持索引。
关键是能够迭代大量对象,对每个元素执行一些操作,直到结果与我需要的结果匹配。我正在寻找的功能是重置循环的能力。这意味着从头开始重新开始迭代,以确保我出于任何原因再次访问每个元素。
如何重置以下循环?
for element in some_set:
print element
if element + offset == needed_result:
# reset
我正在使用 python 2.7 来解决这个特定问题,但我也欢迎使用 python 3 解决方案。
解决方案
一种方法是使用迭代器。iter()
您可以通过简单地调用您的集合来定义一个迭代器,并next
在每次迭代时调用它的方法。当满足条件时,您可以简单地从集合中再次创建迭代器对象并重复该过程:
s = {1,2,3,4,5}
s_ = iter(s)
# Just a counter to avoid endless loop
cont = 0
while cont < 10:
try:
i = next(s_)
except StopIteration:
break
# Some condition
if flag == True:
# Reset the iterator when the condition is met
s_ = iter(s)
continue
cont += 1
推荐阅读
- macos - TOCO/Tensorflow .pb 到 .tflite output_arrays 不起作用
- java - 当属性来自另一个表时,如何避免在 Spring Data JPA 上指定 SQL 查询
- vert.x - 如何在不成为集群成员的情况下访问集群的 Vert.x 事件总线?
- java - 本机库中发生错误时Java退出
- javascript - 尝试从“可观察的链”中获得可观察的错误
- git - git merge 覆盖所有以前的更改
- python - 如何使用“for”循环通过搁置保存/加载数据?
- php - PDO/mysqli 查询不返回与带有正则表达式的 mysql cli 相同的行
- javascript - 在这个 javascript 示例中,如何创建一个可以使用不同参数调用的通用函数?
- java - 类型不匹配,预期 util.List[Nothing] 从 java 到 scala