小编kai*_*sif的帖子

列表值交换:正确的顺序是什么?为什么?

对于整数列表,例如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

2
推荐指数
1
解决办法
75
查看次数

标签 统计

python ×1