我所知道的Python中for
循环的结构如下:
for i in range(10)
然后范围实际上是[0,1,2,3,4,5,6,7,9]
。现在这里有一个问题,那就是我想通过放一行i-=1
来减少我的循环计数器,但是这并没有显示我期望的结果。
以下示例是与while(True)
中的for i in range(10):
i-=1
print i
相同的结构。 Java和C,但是它在这里工作,循环中的计数器忽略了旨在减少它的行。
-1
0
1
2
3
4
5
6
7
8
它会生成输出:
for
我应该怎样做才能通过i=0
while(i<10):
i-=1
print i
i+=1
循环获得我想要的东西!我知道它可以很容易地完成如下:
-1
以下是Java代码示例,我希望看到无限循环打印import static java.lang.System.out;
public class HelloWorld{
public static void main(String []args){
for(int i=0;i<10;i++)
{
i--;
out.println(i);
}
}
}
:
这是Java代码:
{{1}}
答案 0 :(得分:4)
range
函数有3个参数:start,stop和step:
for i in range(-1, 9):
yield i
反过来
for i in range(10, 0, -1):
yield i
修改强>
当然,没有什么可以阻止你直接使用range
。因此map(print, range(10, 0, -1))
会将它们全部打印到屏幕上,而range(10, 0, -1)
会让您直接访问整数。
答案 1 :(得分:2)
你试图做的事情在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
答案 2 :(得分:2)
您不能像这样修改迭代器变量。这里的python更类似于foreach。
为了达到我认为你想要的行为,你应该这样做:
i = 0
while (i<10):
i-=1
print i
i+=1
虽然与以下相比看起来有点傻:
while(True):
print(-1)
答案 3 :(得分:0)
>>> [e for e in xrange(10, 0, -1)]
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]