如何减去';对于';Python中的循环计数器?

如何减去';对于';Python中的循环计数器?,python,for-loop,range,Python,For Loop,Range,我知道Python中for循环的结构如下: for i in range(10) i=0 while(i<10): i-=1 print i i+=1 然后范围实际上是[0,1,2,3,4,5,6,7,9]。现在这里有一个问题,我想通过放置一行I-=1来减少循环的计数器,但是这并没有显示我期望的结果 以下示例的结构与Java和C中的while(True)相同,但在这里它起作用,循环中的计数器忽略了用于减少它的行 for i in range(10): i-=1

我知道Python中
for
循环的结构如下:

for i in range(10)
i=0
while(i<10):
   i-=1
   print i
   i+=1
然后范围实际上是
[0,1,2,3,4,5,6,7,9]
。现在这里有一个问题,我想通过放置一行
I-=1
来减少循环的计数器,但是这并没有显示我期望的结果

以下示例的结构与Java和C中的
while(True)
相同,但在这里它起作用,循环中的计数器忽略了用于减少它的行

for i in range(10):
    i-=1
    print i
并生成输出:

-1
0
1
2
3
4
5
6
7
8
我应该怎么做才能通过
for
循环得到我想要的!我知道这可以很容易地在一段时间内完成,如下所示:

for i in range(10)
i=0
while(i<10):
   i-=1
   print i
   i+=1

range
函数有3个参数:开始、停止和步骤:

for i in range(-1, 9):
  yield i
倒转

for i in range(10, 0, -1):
  yield i
请看下面的图片

编辑:


当然,没有什么可以阻止您直接使用
范围。因此,
map(print,range(10,0,-1))
会将它们全部打印到屏幕上,而
range(10,0,-1)
会让您直接访问整数。

您尝试的操作在python上不起作用的原因是range返回一个整数片段

>> range(10) 
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
for语句迭代切片的每个元素。以下是您试图执行的操作:

for i in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]:
    i = i - 1
    print i

不能像这样修改迭代器变量。python中的for更类似于foreach

要实现我认为您想要的行为,您应该这样做:

i = 0
while (i<10):
    i-=1
    print i
    i+=1

当你想修改循环变量时,使用while循环和你自己的计数器。我发现这个问题有待解释。请向我们展示您试图在Python中实现的Java或C循环,但未成功。您当前的实际代码是什么?预期产量是多少?你想做一个反向循环,还是你真的在试图修改循环(例如,在某些条件下重复元素)?@Naji:要在为True时获取
,请在为True时写入
。你想解决的实际问题是什么?好的。我只是说,从独立的角度来看,代码没有多大意义。如果你只是想要一个永远打印
-1
的无休止循环。您不需要迭代器。您可以在1:print(-1)
时执行
。如果我们知道你想解决的问题,我们可能会帮上更多的忙。无论如何,在python中,你不能像在C中那样在
for
循环中操作python中的迭代器,因此你必须在
while
循环中使用迭代器。这是非常冗余的。只需执行
范围(10,0,-1)
即可。这会产生以下错误:
yield i SyntaxError:'yield'外部函数
@Naji这是正确的。如果
yield
未嵌套在函数中,则会抛出该错误。您也可以只使用
range(10,0,-1)
plain。
while(True):
    print(-1)