抱歉这个愚蠢的问题,我是一名新手程序员。但是有人能告诉我为什么以下程序会这样做吗?
def lol(a):
a=[]
a.append(1)
return a
现在我做的时候
k = [2, 3]
lol(k)
它返回1,但k
仍未改变?为什么呢?
非常感谢!
答案 0 :(得分:5)
在lol(a)
中,行a=[]
将a
绑定到新列表。在此行之后,a
不再与k
绑定到相同的列表。因此,您在函数中实际修改的是新列表,而不是您在参数中收到的列表。有关详细信息,请see the docs。
如果您希望k
为[1]
,那么您可以写下这样的内容:
def lol(a):
a[:] = [1]
return a
k = [2, 3]
lol(k) # now k is equal to [1]
答案 1 :(得分:0)
检查内联评论..
def lol(a): # a and k are pointing to same memory location
a=[] # Now, new list is created, pointing to different memory address.
a.append(1)
return a # returning new list
k = [2, 3] # New list k is created
lol(k)
如果你打印k,你会得到[2,3]。它根本没有被lol()改变。