首页 > 解决方案 > 将列表附加到另一个列表时的奇怪输出

问题描述

我只是在练习python代码,在将一个列表附加到另一个列表时发现了一个奇怪的现象。请看一下代码:

inside = []
outside = []

for i in range(10):
    inside.append(i)
    outside.append(inside)

print(outside)

它输出:

[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]

但不应该输出是这样的:

[[0],[0, 1],[0, 1, 2],[0, 1, 2, 3],[0, 1, 2, 3, 4],[0, 1, 2, 3, 4, 5],[0, 1, 2, 3, 4, 5, 6],[0, 1, 2, 3, 4, 5, 6, 7],[0, 1, 2, 3, 4, 5, 6, 7, 8],[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]

我很困惑我在哪里弄错了。请帮忙。

标签: python

解决方案


这是因为您告诉 Python 将名称为“inside”的数组附加到外部。这意味着,外面的数组看起来像这样:

outside = [inside, inside, inside, inside, inside, inside, inside, inside, inside, inside]

发生这种情况是因为 Python 将一个所谓的指针附加到外部数组,而不是数组本身的实际内容。


推荐阅读