gpt4 book ai didi

python - 在方法内切片列表(Python 3)

转载 作者:太空宇宙 更新时间:2023-11-04 00:47:31 24 4
gpt4 key购买 nike

我有如下方法:

def slice_list(my_list, slice_point):
my_list = my_list[:slice_point]
print("Inside method: ", my_list)

return

我有一个测试如下:

if __name__ == "__main__":
my_list = [1,2,3,4,5]
slice_point = 3

slice_list(my_list, slice_point)
print("Outside method: ", my_list)

我得到的输出不是我期望的,因为列表最终没有被编辑

>>>Inside method:  [1, 2, 3]
>>>Outside method: [1, 2, 3, 4, 5]

但是当我对列表执行 append 时,它确实会永久编辑列表,如本例所示:

def append_to_list(my_list, element):
my_list.append(element)
print("Inside method: ", my_list)

return

if __name__ == "__main__":
my_list = [1,2,3,4,5]
append_to_list(my_list, "new element")
print("Outside method: ", my_list)

给出以下输出:

>>>Inside method:  [1, 2, 3, 4, 5, 'new element']
>>>Outside method: [1, 2, 3, 4, 5, 'new element']

为什么切片不会永久更改列表?

最佳答案

试试这个:

my_list[:] = my_list[:slice_point]

您的旧方法只是将名称 my_list 指向一个新对象,即指向切片返回的副本。

然而,我在上面提出的建议修改了 my_list 最初指向的对象,而不重新绑定(bind)该名称。

关于python - 在方法内切片列表(Python 3),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38775048/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com