--n在python中的意思,python

  \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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: