Skip to main content
 首页 » 编程设计

python之修改for循环中的范围变量(python)

2025年05月04日12sharpest

我不确定为什么 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]