我正在尝试使用python基本库编写代码“ 1024”。在此过程中,我尝试使列表[0,2,4,4]变为[0,2,8,0]。这是我的测试代码。这很简单。
def merger(a, b):
if a == b:
a += b
b = 0
numlist = [0, 2, 4, 4]
merger(numlist[0], numlist[1])
merger(numlist[1], numlist[2])
merger(numlist[2], numlist[3])
print (numlist)
因此,当我尝试进行合并时。我期望输出[0,2,8,0]。但是它给了我[0,2,4,4]。我想可能是因为我只是更改了函数a b的局部变量而不是实际参数?但是,如果我希望这种情况发生,该怎么办?谢谢!
我想我通常想知道我是否想要一个函数不返回任何东西,而只是更改我作为参数传递的变量的值。我该如何实现?
最佳答案
您可以将列表和索引传递给函数:
def merger(l, a, b):
if l[a] == l[b]:
l[a] += l[b]
l[b] = 0
numlist = [0, 2, 4, 4]
merger(numlist, 0, 1)
merger(numlist, 1, 2)
merger(numlist, 2, 3)
print(numlist)
由于列表对象将通过引用传递,因此函数内部列表上的任何更改将在函数调用后生效。