Python,如何就地更改子数组?

Python, how can I change in-place a sub array?

比如我有一个函数

def foo(a):
    a[0],a[1] = a[1], a[0]

a = [1,2,3]

foo(a) 就地更改了 a 的值,但 foo(a[:1]) 没有。 请帮助让我知道如何 foo(a[:1]) 就地 a 更改值

你可以试试索引。

def foo(a, n):
    a[n],a[n+1] = a[n+1], a[n]

正如其他人所提到的,当您对列表进行切片时,它会创建一个新副本,这就是您正在就地修改的内容。考虑:

def foo(a):
    a[0], a[1] = a[1], a[0]
    return a

a = [1,2,3]
a[1:] = foo(a[1:])

def foo(a, i=0):
    a[i], a[i+1] = a[i+1], a[i]

其中 i 是您的切片索引。