我们知道Python中的列表是可变对象。但是,以下代码不会更改在函数内部修改其值的列表的值。
def change(l):
l=l[2:5]
return()
l=[1,3,4,5,2,10]
change(l)
print (l)
我期望输出[4,5,2],但它显示的是结果[1,3,4,5,2,10]。
答案 0 :(得分:1)
与UnhloySheep和Mark Meyer所说的完全一样,将代码从更改为
l = l[2:5]
到
l[:] = l[2:5]
应该解决您的问题。 您完整的代码应为:
def change(l):
l[:]=l[2:5]
return()
l=[1,3,4,5,2,10]
change(l)
print (l)
此印刷品作为您的答案。
[4、5、2]
答案 1 :(得分:0)
在函数中对列表进行变异时,您将需要返回更新的列表,如:
def change(l):
l=l[2:5]
return l
答案 2 :(得分:0)
您不是要更改列表;您只是在更改局部变量l
的值。而是修改该变量引用的 object 。
def change(lst):
del lst[5:] # or lst[5:] = []
del lst[:2] # or lst[:2] = []
# or just l[:] = l[2:5], which I forgot about until reading César Correa's answer
some_list = [1,3,4,5,2,10]
change(some_list)
print (some_list)
答案 3 :(得分:0)
def change(l):
l[:] = l[2:5]
上面的代码将起作用。
普通切片会在切片后更改列表的引用。您可以使用
id()
在切片前后