在第i个列表中追加值

时间:2016-04-12 18:10:23

标签: list python-2.7 append

我有b这是一个列表,它还包含10个列表,列表的每个索引都包含列表本身。现在,当我尝试在第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

输出:

  

[[3],[3],[3],[3],[3],[3],[3],[3],[3],[3]]   [[3,5],[3,5],[3,5],[3,5],[3,5],[3,5],[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,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],[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,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,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],[ 3,5,1,7,2,22,9,8,4,11]]

1 个答案:

答案 0 :(得分:0)

这篇文章建议不要将其作为可变对象进行初始化: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]]
相关问题