r3z*_*3za 9 python for-loop append
我无法理解一段 python 代码的输出。
mani=[]
nima=[]
for i in range(3)
nima.append(i)
mani.append(nima)
print(mani)
Run Code Online (Sandbox Code Playgroud)
输出是
[[0,1,2], [0,1,2], [0,1,2]]
Run Code Online (Sandbox Code Playgroud)
我一生都无法理解为什么它不是
[[0], [0,1], [0,1,2]]
Run Code Online (Sandbox Code Playgroud)
非常感谢任何帮助。
小智 6
这是因为当您将 nima 附加到 mani 时,它不是 nima 的副本,而是对 nima 的引用。
因此,随着尼玛的变化,玛尼中每个位置的参考都只是指向改变的尼玛。
由于 nima 最终为 [0, 1, 2],那么每个附加到 mani 中的引用都只是指同一个对象。
只是为了完成一些人的建议,您应该使用该copy模块。您的代码如下所示:
import copy
mani=[]
nima=[]
for i in range(3):
nima.append(i)
mani.append(copy.copy(nima))
print(mani)
Run Code Online (Sandbox Code Playgroud)
输出:
[[0], [0, 1], [0, 1, 2]]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
332 次 |
| 最近记录: |