附加到Python 2.7中的列表列表

时间:2017-09-08 07:49:31

标签: python python-2.7 list

我想在python中列出一个列表。我正在初始化这个列表,如:

n = 3
adj = [[]]*n

所以现在当我print adj时,我得到了:

[[], [], []]

......没关系。

现在,我想将值附加到特定列表(一个特定索引)。我这样做了:

adj[0].append(1)

因此,我的预期输出是:

[[1], [], []]

然而输出是:

[[1], [1], [1]]

我似乎无法理解为什么会这样。可能我不理解Python的列表是如何工作的,或者是在犯一个完全愚蠢的错误。任何帮助将不胜感激。

此外,我非常感谢有关如何获得所需输出的建议。

Ideone link here.

1 个答案:

答案 0 :(得分:2)

Python中需要此行为。在此上下文中使用*运算符可以为UIKit对象创建引用,这意味着当您修改一个这样的对象时(就像使用list()操作一样),您可以修改所有引用到该对象。

为了得到你想要的输出,我建议使用一个循环来创建彼此不是别名的列表:

append()