【问题标题】:append value in ith list of list在列表的第 i 个列表中附加值
【发布时间】:2016-08-03 12:29:20
【问题描述】:

我有 b 这是一个列表,它还包含 10 个列表,列表的每个索引都包含列表本身。现在,当我尝试在第 i 个列表中附加一些值时,它会将其附加到所有列表中。我不明白为什么?帮助。

代码:

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]]

【问题讨论】:

标签: list python-2.7 append


【解决方案1】:

不要像这篇文章建议的那样初始化为可变对象: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]]

【讨论】:

    猜你喜欢
    • 2021-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-29
    • 1970-01-01
    • 1970-01-01
    • 2022-12-20
    相关资源
    最近更新 更多