繁体   English   中英

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是你的切片索引。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM