这个问题在这里已有答案:
我们知道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]。
正如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]
当你在函数中改变列表时,你需要返回更新的列表,如:
def change(l):
l=l[2:5]
return l
你没有改变名单;你只是改变局部变量l
的值。而是修改该变量引用的对象。
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)
def change(l):
l[:] = l[2:5]
上面的代码将起作用。
正常切片在切片后更改列表的引用。您可以在切片前后使用id()
进行检查