例如,我有一个函数
generator = DataLoader(ds)
for k in generator:
print(k)
和
def foo(a):
a[0],a[1] = a[1], a[0]
a = [1,2,3]
就地更改foo(a)
的值,但a
不变。
请帮助让我知道如何foo(a[:1])
就地更改foo(a[:1])
的值
答案 0 :(得分:1)
正如其他人提到的那样,当您对列表进行切片时,它会创建一个新副本,而您正在就地进行修改。考虑以下任一情况:
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
是您的切片索引。
答案 1 :(得分:0)
您可以尝试使用索引。
def foo(a, n):
a[n],a[n+1] = a[n+1], a[n]