Python swap 函数无法使用 list=[1,2,3] 的索引方法
Python swap function is not working using index method with list=[1,2,3]
我正在尝试使用 python 列表索引方法交换元素,该方法将 return 元素索引。
这样我就可以根据需要使用已知元素进行交换。
这是代码...
a = [1,2,3,4,5,6]
a[a.index(1)],a[a.index(2)] = a[a.index(2)],a[a.index(1)]
输出
>>>a
>>>[1,2,3,4,5,6]
我再次尝试使用交换元素,现在这是输出
a = [2,1,3,4,5,6]
a[a.index(1)],a[a.index(2)] = a[a.index(2)],a[a.index(1)]
输出
>>> a
>>> [1,2,3,4,5,6]
输出列表 [1,2,3,4,5,6]
这是因为 Python 的 evaluation order 并且因为您在 中间 的评估中更改了列表:
对于赋值,首先计算 RHS,从左到右:
# a = [1,2,3,4,5,6]
a[a.index(2)], a[a.index(1)] => 2, 1
现在,从左到右评估 LHS。所以,首先:
# a = [1,2,3,4,5,6]
a[a.index(1)] => a[0] = 2
# now a = [2,2,3,4,5,6]
注意现在 2
的 (first) 索引是 0
!!!
下次评价是:
# a = [2,2,3,4,5,6]
a[a.index(2)] => a[0] = 1
# now a = [1,2,3,4,5,6]
所以你最终得到了相同的列表...
这也是因为index()
方法returns的:
index of the first occurrence of x in s
对于第二个列表,RHS 的计算结果相同,但在 LHS 处你有:
# a = [2,1,3,4,5,6]
a[a.index(1)] => a[1] = 2
# now a = [2,2,3,4,5,6]
现在:
# a = [2,2,3,4,5,6]
a[a.index(2)] => a[0] = 1
# now a = [1,2,3,4,5,6]
看来还不错...
我正在尝试使用 python 列表索引方法交换元素,该方法将 return 元素索引。 这样我就可以根据需要使用已知元素进行交换。
这是代码...
a = [1,2,3,4,5,6]
a[a.index(1)],a[a.index(2)] = a[a.index(2)],a[a.index(1)]
输出
>>>a
>>>[1,2,3,4,5,6]
我再次尝试使用交换元素,现在这是输出
a = [2,1,3,4,5,6]
a[a.index(1)],a[a.index(2)] = a[a.index(2)],a[a.index(1)]
输出
>>> a
>>> [1,2,3,4,5,6]
输出列表 [1,2,3,4,5,6]
这是因为 Python 的 evaluation order 并且因为您在 中间 的评估中更改了列表:
对于赋值,首先计算 RHS,从左到右:
# a = [1,2,3,4,5,6]
a[a.index(2)], a[a.index(1)] => 2, 1
现在,从左到右评估 LHS。所以,首先:
# a = [1,2,3,4,5,6]
a[a.index(1)] => a[0] = 2
# now a = [2,2,3,4,5,6]
注意现在 2
的 (first) 索引是 0
!!!
下次评价是:
# a = [2,2,3,4,5,6]
a[a.index(2)] => a[0] = 1
# now a = [1,2,3,4,5,6]
所以你最终得到了相同的列表...
这也是因为index()
方法returns的:
index of the first occurrence of x in s
对于第二个列表,RHS 的计算结果相同,但在 LHS 处你有:
# a = [2,1,3,4,5,6]
a[a.index(1)] => a[1] = 2
# now a = [2,2,3,4,5,6]
现在:
# a = [2,2,3,4,5,6]
a[a.index(2)] => a[0] = 1
# now a = [1,2,3,4,5,6]
看来还不错...