【发布时间】:2011-12-06 10:19:34
【问题描述】:
我在 Python 中遇到了我认为很奇怪的行为,如果可能的话,我希望有人能解释一下。
我创建了一个空的 2D 列表
listy = [[]]*3
print listy
[[], [], []]
以下工作如我所料:
listy[1] = [1,2] 产生[[], [1,2], []]
listy[1].append(3) 产生[[], [1,2,3], []]
但是,当我追加到其中一个空列表时,python 会追加到所有子列表,如下所示:
listy[2].append(1) 产生[[1], [1,2,3], [1]]。
谁能向我解释为什么会发生这种行为?
【问题讨论】:
-
我想知道这个问题每月有多少次被问到。当然,这是关于 Python 的最常见问题之一(不仅仅是在 Stack Overflow 上)。来自官方 Python 文档中的常见问题解答:How do I create a multidimensional list?