对于整数列表,例如A = [2, 10, -5],我得到错误
Traceback (most recent call last):
File "so.py", line 6, in <module>
v, A[v-1] = A[v-1], v
IndexError: list assignment index out of range
Run Code Online (Sandbox Code Playgroud)
码:
for i, v in enumerate(A):
while 1<=v<=len(A) and v != A[v-1]:
v, A[v-1] = A[v-1], v
Run Code Online (Sandbox Code Playgroud)
但这有效:
for i, v in enumerate(A):
while 1<=v<=len(A) and v != A[v-1]:
A[v-1], v = v, A[v-1]
Run Code Online (Sandbox Code Playgroud)
为什么交换元素的顺序在这里很重要?v总是被检查受到约束.
奇怪的是,不能再现一个较小的例子.但是,
A = [6, 5, 4, 3, 2]
变成一个无限循环.
python ×1