首页 > 解决方案 > Python:如何在“for”循环中的某些条件后修改迭代器值

问题描述

在这样的循环中,如果变量 no 等于 8,如何再次返回第 8 个循环?我做不到,我很困惑。

no -= 1 命令不起作用

for no in range(0,100):
    print("No:",no)
    if no == 8:
      no -= 1 
      print("8 done return again")

标签: python

解决方案


在这里修改变量no不会做你想要的,因为 Python 的循环从迭代器中for no in range(...):获取值。该迭代器不知道变量,并且无论您做什么,都会继续产生范围内的值。norangenono

解决问题的一种方法是使用while循环并自己显式控制循环变量no。一种更“Pythonic”的方式是用来itertools构造一个产生数字的无限迭代器

0, 1, 2, 3, 4, 5, 6, 7, 8, 8, 8, 8, 8, 8...

例如:

from itertools import chain, repeat

for no in chain(range(8), repeat(8)):
    print("No:", no)

请记住,您仍然需要一些方法来摆脱无限循环。


推荐阅读