繁体   English   中英

python 数组引用未从数组中删除元素

[英]python array reference not removing element from the array

我在方法中向数组引用添加和删除元素,我发现虽然元素被添加到引用数组中,但它没有被删除。

def check(arr):
    arr.append(1)
    arr = arr[:-1]

arr = [1]
check(arr)
print(arr)

给出 output [1, 1]我想知道为什么arr = arr[:-1]没有从引用的数组中删除

编辑:很多人都在发布正确的解决方案,我不是在寻找解决方案,而是解释 python 为什么以及如何创建局部变量而不是覆盖全局 scope 以及它如何以相同的名称维护两者!

正如我已经在评论中指出的那样,如果您需要就地修改列表,您可以应用切片表示法

def check(arr):
    arr.append(1)
    arr[:] = arr[:-1]

但实际上这段代码只会删除最后一项(您在上面添加了一行) ,因此您可以使用del

def check(arr):
    arr.append(1)
    del arr[-1]

你不返回任何东西。 function 中的 arr 在本地 scope 中,所以全局 scope arr 不会更新

def check(arr):
    arr.append(1)
    return arr[:-1]

arr = [1]
arr = check(arr)
print(arr)

或者,它可以使用全局变量来完成:

def check_arr():
    global arr
    arr.append(1)
    arr = arr[:-1]

arr = [1]
check_arr()
print(arr)

暂无
暂无

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

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