gpt4 book ai didi

python - 在 Python 中附加到二维列表

转载 作者:IT老高 更新时间:2023-10-28 22:06:38 24 4
gpt4 key购买 nike

我在 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]].

谁能向我解释为什么会发生这种行为?

最佳答案

您还没有创建三个不同的空列表。您创建了 一个 空列表,然后创建了一个新列表,其中包含对该 same 空列表的三个引用。要解决此问题,请改用以下代码:

listy = [[] for i in range(3)]

现在运行您的示例代码会得到您可能预期的结果:

>>> listy = [[] for i in range(3)]
>>> listy[1] = [1,2]
>>> listy
[[], [1, 2], []]
>>> listy[1].append(3)
>>> listy
[[], [1, 2, 3], []]
>>> listy[2].append(1)
>>> listy
[[], [1, 2, 3], [1]]

关于python - 在 Python 中附加到二维列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7745562/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com