我尝试编写的代码非常简单。我试图生成所有数字的排列,直到' 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总是通过引用传递。我在这里做错了吗?