python - 我没有分配 2 年,但它是如何分配的?
问题描述
我只分配了一个 y,但它是如何在内部分配了 2 个 y 的?
x=[['', 'a', 'b'], ['', 'c', 'd']]*2
print(x)
x[0][0]='y'
print('\n')
print(x)
输出
[['', 'a', 'b'], ['', 'c', 'd'], ['', 'a', 'b'], ['', 'c', 'd']]
[['y', 'a', 'b'], ['', 'c', 'd'], ['y', 'a', 'b'], ['', 'c', 'd']]
解决方案
您将 X 初始化为两个列表的列表。您可以在 print(x) 的输出中看到这一点。
但是,这两个列表是同一个对象。当您以如下方式创建列表时:[values]*n,它将引用同一个对象 n 次来填充您的列表。
因此,x[0] 指向 ['y', 'a', 'b'] 的两个实例。
推荐阅读
- asp.net - ASP.NET 页面在 30 秒后停止处理
- python - AttributeError 发生在日期时间表达式中
- javascript - throw import 语句中预期的 Angular TS1003 标识符,我的错误源于从“rxjs”导入 throw
- python - tkinter:使用运行 TK 主循环的多处理生成一个新进程
- c++ - 使用虚拟类时方法返回 nullptr
- linker - 如何在 openssl 的配置脚本中设置 --rpath
- java - 指定 android 网格布局中的项目以重新调整大小以填充屏幕高度
- reactjs - 反应复选框切换:行为与预期相反
- neural-network - NEAT 算法:如何交叉不相交和多余的基因?
- c++ - 纹理管OpenGL