今天在数据分析的过程中碰上一个奇葩的问题(如标题所示)。

背景:我需要把一个数组,由30个一级元素(代表一个月的30天),每个一级元素包含了3种二级元素,每一个二级元素包含了24种三级元素(代表一天的24个小时)。我一开始想着这么庞大的数组手动建立太麻烦了,写个循环创立简单很多,代码如下:

day=[]
for i in range(0,24):#三级元素数组day.append(0)
for i in range(0,30):#一级元素数组data.append([day,day,day])

看着逻辑挺顺,但,这就是万恶的开始,在空数组创立阶段就埋下了炸弹。

可惜问题就是,当我赋值其中一个基本元素的时候,其他的元素也跟着变化:比如改变data[26][1][9],就会发现所有的[1][9]都变了,从1到30全部都变了。。

吾上下而求索,发现是地址的问题!

print(id(data))
print(id(day))
print(id(data[0][0]))
print(id(data[0][1]))
print(id(data[0][2]))
print(id(data[5][0]))
print(id(data[9][1]))
print(id(data[20][2]))
print(id(data[26][0]))>>>140429613426056
>>>140429613425928
>>>140429613425928
>>>140429613425928
>>>140429613425928
>>>140429613425928
>>>140429613425928
>>>140429613425928
>>>140429613425928

这就是问题的根源所在,所有的二级元素都共享同一个数组(地址相同),当让会改一个基本单元,其他的数组就跟着变化了啦!~~

解决方案:

最朴素的解决方法就是手动(当时为了避免繁琐果断抛弃,如今真香~)。

for i in range(0,30):data.append([[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
])
print(data[0][0])
print(data[1][2])
print(data[2][1])
print(data[24][0])>>>140669134329544
>>>140669134330120
>>>140669134330440
>>>140669134324552

看有没有感觉不一样~

或者你要是觉得实在不想手动打那么多的零(零异事件),numpy的zeros可以拯救。比如np.zeros(24)就等于上面的那么多个零啦!

python 多维数组赋值其中一个单元其他单元也自动赋值相关推荐

  1. python给矩阵赋值_解决Python二维数组赋值问题

    解决Python二维数组赋值问题 当我们采用s=[[0]*3]*2初始化一个数组,然后对s[0][0]进行赋值,改变的是第一列所有的值.因为用s = [[0]*3]*2 初始化数组,他表示的是指向这个 ...

  2. python二维数组的行和列_python 定义N行2列二维数组与赋值

    python中怎么用花括号定义一个5行4列的数组花括号是字典,不是数组. python:定义函数,输入一个m维数组X和一个整数n,输# Python3.6import numpy as npwhile ...

  3. python二维数组单个元素赋值

    当你用如下方法创建一个python二维数组时 memo = [[1] * 3] * 4 于是你得到 memo = [ [1, 1 ,1],[1, 1 ,1],[1, 1 ,1],[1, 1 ,1]&g ...

  4. java语言:创建一个二维数组,将古诗《春晓》的内容赋值于二维数组,然后分别用横版和竖版两种方式输出。

    问题:创建一个二维数组,将古诗<春晓>的内容赋值于二维数组,然后分别用横版和竖版两种方式输出. 前两天上java课的时候老师,给我们出了这道题.要求:要用java语言来写. 根据要求创建的 ...

  5. python 多维数组去重_python多维数组运算-女性时尚流行美容健康娱乐mv-ida网

    自动秒收录 如何加入 (当前页) 购买本站源码 自媒体交流 查询是否收录 查询收录 × 快速加入 只要做上本站的友情链接,并在您站上点击一次,就免人工自动收录!并自动排在本站第一位. 本站已收录286 ...

  6. python二维数组表示_python中二维数组中的数如何表达

    python二维数组如何挑选出一定范围的数值? 比如说有一个二维数组 13.1 13.2 13.3 13.4 15.5 15.0 45.2 22.3 22.3 3 [j for i in a for ...

  7. #Python# 二维数组的定义、使用的几种方法

    #Python# 二维数组的定义.使用的几种方法 通常的困扰 1.先介绍最简单的一种方式 2.再介绍最常见的一种方式 3.最后介绍最暴力直观的一种方式 通常的困扰 之前对Python里面创建.使用二维 ...

  8. python画二维散点图-基于python 二维数组及画图的实例详解

    1.二维数组取值 注:不管是二维数组,还是一维数组,数组里的数据类型要一模一样,即若是数值型,全为数值型 #二维数组 import numpy as np list1=[[1.73,1.68,1.71 ...

  9. Python 二维数组

    Python数组的应用中在实际编程中是一个非常重要的应用技术,作为Python编程人员来说,必须要熟练的掌握这方面的所有应用技巧.那么,接下来,我们将会通过对Python二维数组的理解来为大家解读这方 ...

  10. python二维数组操作_Python二维数组应用与操作

    课课家将会在这里为大家详细的介绍一下Python二维数组的相关应用方法以及定义方式,相信朋友们可以从中学习到更多的知识. Python数组的应用中在实际编程中是一个非常重要的应用技术,作为Python ...

最新文章

  1. 如何看待清华北大毕业生流失去国外?
  2. 计算机高二期末考试试题,高二年级计算机专业期末试题
  3. .NET1.0升级至2.0十个问题
  4. 不同地图坐标系的坐标转换
  5. PHP生成日历(实例详解)
  6. Leetcode题库 144.二叉树的前序遍历(递归 C实现)
  7. spark的Web UI中的Storage啥信息都没有
  8. 牛客题霸 [字符串的排列] C++题解/答案
  9. 如何编写有效的Bug Report
  10. operation is executing and cannot be enqueued
  11. Web2.0:天使投资与VC的竞技场
  12. unity用visual studio写代码的时候一直显示importing assets
  13. 创新5.1 7.1声卡安装调试教程
  14. cocos creator3.x 触控方向键实现
  15. java jlabel 字体大小_java-如何在更改字体大小时更改JLabel的大小...
  16. 苹果ios9.2 html白屏,苹果游戏中心白屏怎么办 苹果游戏中心白屏解决方法【详解】...
  17. 前端优质网络内容(引用)
  18. PDF在线预览插件汇总与方案总结
  19. std__vector介绍
  20. 软件工程——四则运算3(C#)

热门文章

  1. 评价类模型(一)层次分析法
  2. 链栈的基本操作(超详细)
  3. 建筑八大员培训湖北质量员培训质量监督的有效机制和优化措施
  4. 信息系统项目管理教程第四版-软考官方教材
  5. 前辈们大公司面试感受
  6. ESXI install FREE NAS
  7. 以太坊部署_从以太坊开始-部署和运行合同
  8. python之subprocess.Popen常用案例
  9. 抛物线交点式公式_抛物线交点式
  10. js中int转string,固定位数,不足位数,前面用固定符号补齐。