Python停留在For循环中的元素上



我想知道如何在for循环中以某种方式停留在一个元素上,直到下一个循环循环。下面是一个代码示例:

for element in numbers:
try:
...
except:
# It should stay on this element for the next time
pass

例如,我有

numbers = ['apple', 'banana', 'peach']

现在我以元素Banana为例,如果出现错误,它应该只停留在Banana上直到下一个循环,所以预期的输出将是:apple, Banana(错误),Banana(现在它再次尝试),peach。

使用while循环对索引进行迭代:

i = 0
while i < len(numbers):
element = numbers[i]
try:
...
i+=1
except:
# It should stay on this element for the next time
pass

据我所知,这对于常规的for循环是不可能的。您可以通过直接控制迭代变量获得类似的结果:

i = 0
while i < len(numbers):
try:
# Do work
numbers[i] ....
i += 1
except:
# Don't increment i
pass

要小心,因为使用if "banana"可能会陷入无限循环。永远不会成功。

您可以在for循环中使用一个简单的while循环:

for element in numbers:
while True:
try:
...
break  # Success; break out of the while to the next element.
except:
# It should stay on this element for the next time
pass

您可以将while放入for中以继续处理该元素,直到您满意为止。这可能会导致无限循环,所以要明智地编写代码。

numbers = ['apple', 'banana', 'peach']
i_hate_bananas = True
for element in numbers:
while True:
try:
if i_hate_bananas and element == 'banana':
raise ValueError(f'{element}, yuck')
print("I like", element)
break
except ValueError as e:
print(e)
i_hate_bananas = False
print('done')

这可能比只使用单个while并将索引器增加到numbers更好,因为它与迭代一起工作,因此与任何可迭代对象一起工作。

相关内容

  • 没有找到相关文章

最新更新