Python:如何从迭代开始、停止、步进循环中断后调用位置
Python: How to recall position after break from iteration over start, stop, step loop
我正在学习迭代器以及如何使用它们,并且在这个过程中提出了一个问题。是否有可能回忆起循环在迭代期间停止的地方(如果循环有一个满足的中断条件)然后从回忆的地方开始?
我所说的一个例子是,我有这段代码:
print("Range() Test")
for i in range(10, 100, 10):
if i == 60:
print('Break Point')
break
print(i)
for i in range(10, 100, 10):
print(i)
哪个应该 运行 并给你这样的东西:
Range() Test
10
20
30
40
50
Break Point
10
20
30
40
50
60
70
80
90
我的第一个问题是:
1) 有没有办法回忆起中断发生的位置并从那里开始,而不是我笨手笨脚的重新开始?我已经看到迭代在项目列表上的实例,但无法找到 example/work 一个在 start/stop/step 符号上使用 iter() 的功能示例。
2) 在做研究时(我正在学习 Python 并做了很多自学)我已经看到 range() 函数描述器既是迭代器又不是迭代器所以,如果有人对此有更多明确的信息,而不是为了在我的示例中使用它而撕毁我一个新的信息,将不胜感激。
谢谢!
这通常是糟糕的设计。如果您想从中断的地方继续,为什么要完全离开循环的安全性呢?您在该条件块中包含了干扰性 activity。
print("Range() Test")
for i in range(10, 100, 10):
if i == 60:
print('Break Point')
print(i)
或者,保存尽可能多的状态以重新启动:
lower = 10
upper = 100
inc = 10
for i in range(lower, upper, inc):
if i == 60:
print('Break Point')
break
print(i)
old_i = i
for i in range(old_i, upper, inc):
print(i)
输出:
Range() Test
10
20
30
40
50
Break Point
60
70
80
90
~
关于你的第一个问题...我认为你是在正确的轨道上。 iter()
将使范围对象成为迭代器。它会自行跟踪,您可以在稍后的代码中找到您所在的位置。
>>> x=iter(range(1,100,10))
>>> for i in x:
... if i >30:
... break
...
>>> for i in x:
... print(i)
...
41
51
61
71
81
91
2) 范围对象不是迭代器 This 解释得很好
我正在学习迭代器以及如何使用它们,并且在这个过程中提出了一个问题。是否有可能回忆起循环在迭代期间停止的地方(如果循环有一个满足的中断条件)然后从回忆的地方开始?
我所说的一个例子是,我有这段代码:
print("Range() Test")
for i in range(10, 100, 10):
if i == 60:
print('Break Point')
break
print(i)
for i in range(10, 100, 10):
print(i)
哪个应该 运行 并给你这样的东西:
Range() Test
10
20
30
40
50
Break Point
10
20
30
40
50
60
70
80
90
我的第一个问题是:
1) 有没有办法回忆起中断发生的位置并从那里开始,而不是我笨手笨脚的重新开始?我已经看到迭代在项目列表上的实例,但无法找到 example/work 一个在 start/stop/step 符号上使用 iter() 的功能示例。
2) 在做研究时(我正在学习 Python 并做了很多自学)我已经看到 range() 函数描述器既是迭代器又不是迭代器所以,如果有人对此有更多明确的信息,而不是为了在我的示例中使用它而撕毁我一个新的信息,将不胜感激。
谢谢!
这通常是糟糕的设计。如果您想从中断的地方继续,为什么要完全离开循环的安全性呢?您在该条件块中包含了干扰性 activity。
print("Range() Test")
for i in range(10, 100, 10):
if i == 60:
print('Break Point')
print(i)
或者,保存尽可能多的状态以重新启动:
lower = 10
upper = 100
inc = 10
for i in range(lower, upper, inc):
if i == 60:
print('Break Point')
break
print(i)
old_i = i
for i in range(old_i, upper, inc):
print(i)
输出:
Range() Test
10
20
30
40
50
Break Point
60
70
80
90
~
关于你的第一个问题...我认为你是在正确的轨道上。 iter()
将使范围对象成为迭代器。它会自行跟踪,您可以在稍后的代码中找到您所在的位置。
>>> x=iter(range(1,100,10))
>>> for i in x:
... if i >30:
... break
...
>>> for i in x:
... print(i)
...
41
51
61
71
81
91
2) 范围对象不是迭代器 This 解释得很好