【发布时间】:2017-04-28 05:30:58
【问题描述】:
我正在一个编码网站上尝试一些问题,其中一个问题要求用户制作一个 n 大小的空嵌套列表。所以很自然地,我的第一个倾向就是像这样相乘:
list = [[0]*n]*n
但这不起作用,因为其余代码进入列表并更改了值,并且此解决方案出现了超出范围的错误。 但是,下面的代码确实有效。
list = [[0]*n for _ in range (n)]
我想知道这是怎么回事。据我所知,我的 IDLE 中的结果是相同的。
谢谢
【问题讨论】:
-
尝试从其中一个列表中修改一个元素,然后重新检查结果。你会发现它们并不相同。
-
“子列表中意外反映的列表更改列表”可能最接近这个问题。其他两个不是。