2016-04-12 38 views
0

我有b是列表,它還包含10個列表,列表中的每個索引都包含列表本身。現在,當我嘗試追加第i個列表中的某個值時,它會將其附加到所有列表中。我不明白爲什麼?幫幫我。在列表中的第i個列表中追加值

CODE:

a=[3,5,1,7,2,22,9,8,4,11] 
b=[[]]*10 
d=10 
for i in range(len(a)):   
    b[i].append(a[i]) 
    print b 

OUTPUT:

[[3],[3],[3],[3],[3],[3], [3,5],[3,5],[3,5],[3,5],[3],[3],[3],[3] ,[3,5],[3,5],[3,5],[3,5]] [[3,5,1],[3,5,1],[3,5 ,[1],[3,5,1],[3,5,1],[3,5,1],[3,5,1],[3,5,1],[3,5,1 ],[3,5,1]] [[3,5,1 ,[3,5,1,7],[3,5,1,7],[3,5,1,7],[3,5,1,7] ,[3,5,1,7],[3,5,1,7],[3,5,1,7],[3,5,1,7]] [[3,5 ,1,7,2],[3,5,1,7,2],[3,5,1,7,2],[3,5,1,7,2],[3,5,1 ,[7,2],[3,5,1,7,2],[3,5,1,7,2],[3,5,1,7,2],[3,5,1,7] ,[2],[3,5,1,7,2]] [[3,5,1,7,2,22],[3,5,1,7,2,22],[3,5 ,1,7,2,22],[3,5,1,7,2,22],[3,5,1,7,2,22],[3,5,1,7,2,22],[3,5,1,7,2,22] ],[3,5,1,7,2,22],[3,5,1,7,2,22],[3,5,1,7,2,22],[3,5,1 ,[7,2,22]] [[3,5,1,7,2,22,9],[3,5,1,7,2,22,9],[3,5,1,7] ,2,22,9],[3,5,1,7,2,22,9],[3,5,1,7,2,22,9],[3,5,1,7,2] ,22,9],[3,5,1,7,2,22,9],[3,5,1,7,2,22,9],[3,5,1,7,2,22 ,9],[3,5,1,7,2,22,9]] [[3,5,1,7,2,22,9,8],[3,5,1,7,2 ,22,9,8],[3,5,1,7,2,22,9,8],[3,5,1,7,2,22,9,8],[3,5,1 [7,2,22,9,8],[3,5,1,7,2,22,9,8],[3,5,1,7,2,22,9,8],[3 ,5,1,7,2,22,9,8,],[3,5,1,7,2,22,9,8],[3,5,1,7,2,22,9,8 ]] [[3,5,1,7,2,22,9,8,4],[3,5,1,7,2,22,9,8,4],[3,5,1 ,7,2,22,9,8,4],[3,5,1,7,2,22,9,8,4],[3,5,1,7,2,22,9,8 ,4],[3,5,1,7,2,22,9,8,4],[3,5,1,7,2,22,9,8,4],[3,5,1 ,7,2,22,9,8,4],[3,5,1,7,2,22,9,8,4],[3,5,1,7,2,22,9,8 ,[4]] [[3,5,1,7,2,22,9,8,4,11],[3,5,1,7,2,22,9,8,4,11], [3,5,1,7,2,22,9,8,4,11],[3,5,1,7,2,2,9,8,4,11],[3,5,1 ,7,2,22,9,8,4,11],[3,5,1,7,2,22,9,8,4,11],[3,5,1,7,2,22 ,9,8,4,11],[3,5,1,7,2,22,9,8,4,11],[3,5,1,7,2,22,9,8,4 ,11],[3,5,1,7,2,22,9,8,4,11]]

+0

已經在這裏解答:http://stackoverflow.com/questions/6814727/app最終一個全新的項目到一個列表中之列表 – PseudoAj

回答

0

不要intialize作爲一個可變的對象,因爲這暗示後:Append a new item to a list within a list

相反,改寫名單爲:

>>> b=[[] for _ in xrange(10)] 
>>> b 
[[], [], [], [], [], [], [], [], [], []] 
>>> b[0].append(0) 
>>> b 
[[0], [], [], [], [], [], [], [], [], []] 

對於你給的代碼,

a=[3,5,1,7,2,22,9,8,4,11] 
b=[[] for _ in xrange(10)] 
d=10; 
for i in range(len(a)): 
    b[i].append(a[i]) 
    print b 

輸出:

[[3], [], [], [], [], [], [], [], [], []] 
[[3], [5], [], [], [], [], [], [], [], []] 
[[3], [5], [1], [], [], [], [], [], [], []] 
[[3], [5], [1], [7], [], [], [], [], [], []] 
[[3], [5], [1], [7], [2], [], [], [], [], []] 
[[3], [5], [1], [7], [2], [22], [], [], [], []] 
[[3], [5], [1], [7], [2], [22], [9], [], [], []] 
[[3], [5], [1], [7], [2], [22], [9], [8], [], []] 
[[3], [5], [1], [7], [2], [22], [9], [8], [4], []] 
[[3], [5], [1], [7], [2], [22], [9], [8], [4], [11]]