\n在python中的意思,python
本文主要介绍python使用[[v]*n]*n遇到的坑及其解决方法,有很好的参考价值。希望对大家有帮助。如有错误或不足之处,请不吝赐教。
00-1010使用[[v]*n]*n遇到的问题通过一些研究,使用[[v]*n]*m遇到的问题需求:我想通过python生成一个m行n列的矩阵。
目录
今天通过[[v] * n] * n快速创建了一个列表,在使用索引修改值的时候,本来打算修改元素a[0][0]的第一个值,但是打印出来的结果修改了所有三个元素的第一个值,我就记录下来了!
使用[[v]*n]*n遇到的坑
数据=[[0] *3] *3
数据
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
数据[0][0]=1
数据
[[1, 0, 0], [1, 0, 0], [1, 0, 0]]
遇到的问题
id(数据[0])
836879108296
id(数据[1])
836879108296
Id(data[2]) #可以发现三个元素使用了相同的内存地址号。
836879108296
#建议使用这种方法或列表派生。
数据2=[[1,2,3],[4,5,6],[7,8,9]]
id(数据2[0])
836879107208
id(数据2[1])
836879108552
id(数据2[2])
836879109960
#使用列表派生
data3=[[1,2] for i in range(10)]
数据3[0][0]=100
[[100,2],#只是修改了第一个元素的第一个值
[1, 2],
.
[1, 2]]
#检查内存地址
id(数据3[0])
836879107528
id(数据3[1])
836848339912
通过一番研究
使用[[v]*n]*m遇到的问题
方式1:(有问题)
数据=[[0]*3]*4 #4行和3列
数据
输出
[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]
修改数据[0][0]元素的值
数据[0][0]=1
数据
输出
[[1, 0, 0], [1, 0, 0], [1, 0, 0], [1, 0, 0]]
哇,你被结果迷住了吗?为什么改变一个值会改变所有列为0的元素?
分析:我们可以看看它们对应的内存指向地址。
这就是问题所在。
方式2:
#输入
data1=[[0表示范围(3)中的I]表示范围(4)中的j]
数据1
#输出
[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]
#输入
data1[0][0]=1
数据1
#输出
[[1, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]
以上个人经验,希望给你一个参考,也希望你能支持盛行的IT软件开发工作室。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。