我正在尝试使用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)


由于列表对象将通过引用传递,因此函数内部列表上的任何更改将在函数调用后生效。

09-17 19:53