我不确定为什么 python 会显示这种行为:
for x in range(5):
print "Before: ",x
if x<3:
x-=1
print "After: ",x
我得到的输出是:
Before: 0
After: -1
Before: 1
After: 0
Before: 2
After: 1
Before: 3
After: 3
Before: 4
After: 4
我没想到它会在第一次迭代中将 x 的值更改为 -1 后将其更改为 1。 或者,当我想更改范围变量的值时,有没有办法实现所需的行为?
谢谢。
请您参考如下方法:
I am not sure why python would show this behavior
因为 x 在循环的每次迭代中都会被重置。
如果要修改范围,需要先保存到一个变量中,然后再修改
例如在 Python2 中
my_range = range(5) # [0, 1, 2, 3, 4]
for i,x in enumerate(my_range):
print "Before: ", my_range[i]
if x < 3:
my_range[i] = x-1
print "After: ", my_range[i]
print my_range # [-1, 0, 1, 3, 4]
