为什么我可以打印列表,但不能将它们添加到数组中?

时间:2018-07-11 01:12:35

标签: python arraylist

所以我在写程序,却遇到了问题(如往常一样)。 我的程序需要一段代码来收集所有包含指定信息的指定长度的所有可能列表。我尝试了几种不同的方法,但我不明白为什么这种方法不起作用。

那么,看,如果我运行这段代码并要求它打印出每个列表。

def list_all(Len,From,Store):
    for item in From:
        Store[Len] = item
        if Len>0:
            Len-=1
            list_all(Len,From,Store)
            Len+=1
        else:
            print Store                #print them out 

list_all(2,range(2),[0,0,0])

我知道...

[0, 0, 0]
[1, 0, 0]
[0, 1, 0]
[1, 1, 0]
[0, 0, 1]
[1, 0, 1]
[0, 1, 1]
[1, 1, 1]

正是我想要的。所有可能的长度为三的列表,仅由二进制数字组成。

但是如果我尝试将它们添加到数组中...

List = []           
def list_all(Len,From,Store):
    for item in From:
        Store[Len] = item
        if Len>0:
            Len-=1
            list_all(Len,From,Store)
            Len+=1
        else:
            List.append(Store)                 #List them out

list_all(2,range(2),[0,0,0])
print List

我知道...

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

出了什么问题?为什么将它添加到数组会更改它?

0 个答案:

没有答案