Python 3.x 在python中修改列表

Python 3.x 在python中修改列表,python-3.x,Python 3.x,谁能解释一下为什么我在列表的末尾得到一个三,if语句检查x列表中的元素是否等于定义的val x = [0,1,2,2,3,0,4,2] val = 2 print (x) val =2 for i in range(len(x)): for j in range(len(x)-1 , 0 , -1 ): if x[i] == val and x[j] != val: x[i] , x[j] = x[j] , x[i] print (x) 使用此代

谁能解释一下为什么我在列表的末尾得到一个三,if语句检查
x
列表中的元素是否等于定义的
val

x = [0,1,2,2,3,0,4,2]
val = 2
print (x)
val =2
for i in range(len(x)):
    for j in range(len(x)-1 , 0 , -1 ):
        if x[i] == val and x[j] != val:
            x[i] , x[j] = x[j] , x[i]
print (x)
使用此代码:

x = [0,1,2,2,3,0,4,2]
val = 2
print (x)
val =2
for i in range(len(x)):
    for j in range(len(x)-1 , 0 , -1 ):
        if x[i] == val and x[j] != val:
            print("x[",i,"]=",x[i]," ; x[",j,"]=",x[j])
            x[i] , x[j] = x[j] , x[i]
            print(x)
print (x)
我得到了这个输出:

[0, 1, 2, 2, 3, 0, 4, 2]
x[ 2 ]= 2  ; x[ 6 ]= 4
[0, 1, 4, 2, 3, 0, 2, 2]
x[ 3 ]= 2  ; x[ 5 ]= 0
[0, 1, 4, 0, 3, 2, 2, 2]
x[ 5 ]= 2  ; x[ 4 ]= 3
[0, 1, 4, 0, 2, 3, 2, 2]
x[ 6 ]= 2  ; x[ 5 ]= 3
[0, 1, 4, 0, 2, 2, 3, 2]
x[ 7 ]= 2  ; x[ 6 ]= 3
[0, 1, 4, 0, 2, 2, 2, 3]
[0, 1, 4, 0, 2, 2, 2, 3]

注意,范围(len(x)-1,0,-1)的解释类似于[7,6,5,4,3,2,1]。当i=7和j=6(在循环末端)时,x[i]=2;x[j]=3所以3被附加到x[7]。

只需在每次迭代结束时打印x,然后自己看看替换是如何进行的