使用列表推导与multiplicatoi

时间:2017-04-28 05:30:59

标签: python list nested

我在编码网站上尝试了一些问题,其中一个问题要求用户制作一个n大小的空嵌套列表。所以我的第一个倾向就是如此繁殖:

list = [[0]*n]*n

但是这没有用,因为其余代码进入列表并更改了值,这个解决方案超出了界限错误。 但是,下面的代码确实有效。

list = [[0]*n for _ in range (n)]

我想知道这是怎么回事。就我所知,我的IDLE中的结果是相同的。

谢谢

1 个答案:

答案 0 :(得分:-1)

这是初学者所面临的一个众所周知的陷阱。在列表上使用*运算符时,将复制对象引用。没有列表的副本。您可以在列表元素上执行id()来检查它。

第二段代码分别创建n列表。因此每个人都有自己独特的对象参考。

更新: 这在Udacity上被记录为第一个陷阱:https://www.udacity.com/wiki/common-python-pitfalls