在python中与范围一起使用时如何增加for循环索引?

gol*_*yap 3 python loops

我有一个 for 循环如下:

i=0 
while true:
 print("i initialized as", i)
 for i in range(0,3):
      print ("inside for",i)
      i = i + 1
 print("exit from for i value is",i)
Run Code Online (Sandbox Code Playgroud)

现在在 while 无限循环中有 for 并且每次在里面 for "i" 迭代都从 "0" 开始,理想情况下 "i" 应该得到递增的值并从 2 开始,输出是:

 inside for 0
 inside for 1
 inside for 2

 second iteration:

 inside for 0
 inside for 1
 inside for 2
 .
 .
Run Code Online (Sandbox Code Playgroud)

理想的输出是这样的:

 inside for 0
 inside for 1
 inside for 2

 second iteration:
 inside for 3
 inside for 4
 inside for 5
 .
 .
Run Code Online (Sandbox Code Playgroud)

所以重点是“i”值没有保存,每次循环从0开始,那么在进入for循环之前,我如何让“i”从最后一个递增的值开始。

Jea*_*bre 9

您无法控制i何时使用for i in .... 它被设置为for循环时循环决定的任何内容。

在这里,只是不要i用于您的循环索引,使用匿名变量,例如_计数 3 次,保留i为“全局”计数器:

i=0
while i<10:  # just to stop after a while for the demo
 print("i initialized as", i)
 for _ in range(0,3):
      print ("inside for",i)
      i = i + 1
 print("exit from for i value is",i)
Run Code Online (Sandbox Code Playgroud)

输出:

inside for 0
inside for 1
inside for 2
exit from for i value is 3
i initialized as 3
inside for 3
inside for 4
inside for 5
exit from for i value is 6
i initialized as 6
inside for 6
inside for 7
inside for 8
exit from for i value is 9
i initialized as 9
inside for 9
inside for 10
inside for 11
exit from for i value is 12
Run Code Online (Sandbox Code Playgroud)

旁白:while true应该是while True。与 Java 和 C++ 不同,布尔值在 Python 中大写。