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
是您的切片索引。
比如我有一个函数
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
是您的切片索引。