参数在Python中不一致

时间:2016-07-24 07:33:26

标签: python python-3.x parameters

我尝试编写的代码非常简单。我试图生成所有数字的排列,直到' n'并返回这些值的列表。例如,如果n = 2,则输出为:

[[1,1],[1,2],[2,1],[2,2]]

代码如下:

def compute_arr(ind, limit, cnt, so_far, lst):
    # if count == limit, append so_far to lst
    if cnt == limit:
        lst.append(so_far)
        return
    # else continue building the list with every permutation from 1 to n
    for t in range(1, limit+1):
        so_far[cnt] = t
        return compute_arr(t, limit, cnt+1, so_far, lst)

def compute():
    n = 2
    so_far, lst = list(range(n)), list()
    compute_arr(0, n, 0, so_far , lst)
    print(lst)

当我打印每个' so_far'当我追加到' lst'时,我可以看到附加的正确值。但是,当我打印出最终列表的值时,它们看起来都具有相同的最终值。例如,对于n = 2,输出为:

[[2,2],[2,2],[2,2],[2,2]]

我认为Python总是通过引用传递。我在这里做错了吗?

0 个答案:

没有答案