python 多维数组赋值其中一个单元其他单元也自动赋值
今天在数据分析的过程中碰上一个奇葩的问题(如标题所示)。
背景:我需要把一个数组,由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 多维数组赋值其中一个单元其他单元也自动赋值相关推荐
- python给矩阵赋值_解决Python二维数组赋值问题
解决Python二维数组赋值问题 当我们采用s=[[0]*3]*2初始化一个数组,然后对s[0][0]进行赋值,改变的是第一列所有的值.因为用s = [[0]*3]*2 初始化数组,他表示的是指向这个 ...
- python二维数组的行和列_python 定义N行2列二维数组与赋值
python中怎么用花括号定义一个5行4列的数组花括号是字典,不是数组. python:定义函数,输入一个m维数组X和一个整数n,输# Python3.6import numpy as npwhile ...
- python二维数组单个元素赋值
当你用如下方法创建一个python二维数组时 memo = [[1] * 3] * 4 于是你得到 memo = [ [1, 1 ,1],[1, 1 ,1],[1, 1 ,1],[1, 1 ,1]&g ...
- java语言:创建一个二维数组,将古诗《春晓》的内容赋值于二维数组,然后分别用横版和竖版两种方式输出。
问题:创建一个二维数组,将古诗<春晓>的内容赋值于二维数组,然后分别用横版和竖版两种方式输出. 前两天上java课的时候老师,给我们出了这道题.要求:要用java语言来写. 根据要求创建的 ...
- python 多维数组去重_python多维数组运算-女性时尚流行美容健康娱乐mv-ida网
自动秒收录 如何加入 (当前页) 购买本站源码 自媒体交流 查询是否收录 查询收录 × 快速加入 只要做上本站的友情链接,并在您站上点击一次,就免人工自动收录!并自动排在本站第一位. 本站已收录286 ...
- 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 ...
- #Python# 二维数组的定义、使用的几种方法
#Python# 二维数组的定义.使用的几种方法 通常的困扰 1.先介绍最简单的一种方式 2.再介绍最常见的一种方式 3.最后介绍最暴力直观的一种方式 通常的困扰 之前对Python里面创建.使用二维 ...
- python画二维散点图-基于python 二维数组及画图的实例详解
1.二维数组取值 注:不管是二维数组,还是一维数组,数组里的数据类型要一模一样,即若是数值型,全为数值型 #二维数组 import numpy as np list1=[[1.73,1.68,1.71 ...
- Python 二维数组
Python数组的应用中在实际编程中是一个非常重要的应用技术,作为Python编程人员来说,必须要熟练的掌握这方面的所有应用技巧.那么,接下来,我们将会通过对Python二维数组的理解来为大家解读这方 ...
- python二维数组操作_Python二维数组应用与操作
课课家将会在这里为大家详细的介绍一下Python二维数组的相关应用方法以及定义方式,相信朋友们可以从中学习到更多的知识. Python数组的应用中在实际编程中是一个非常重要的应用技术,作为Python ...
最新文章
- 如何看待清华北大毕业生流失去国外?
- 计算机高二期末考试试题,高二年级计算机专业期末试题
- .NET1.0升级至2.0十个问题
- 不同地图坐标系的坐标转换
- PHP生成日历(实例详解)
- Leetcode题库 144.二叉树的前序遍历(递归 C实现)
- spark的Web UI中的Storage啥信息都没有
- 牛客题霸 [字符串的排列] C++题解/答案
- 如何编写有效的Bug Report
- operation is executing and cannot be enqueued
- Web2.0:天使投资与VC的竞技场
- unity用visual studio写代码的时候一直显示importing assets
- 创新5.1 7.1声卡安装调试教程
- cocos creator3.x 触控方向键实现
- java jlabel 字体大小_java-如何在更改字体大小时更改JLabel的大小...
- 苹果ios9.2 html白屏,苹果游戏中心白屏怎么办 苹果游戏中心白屏解决方法【详解】...
- 前端优质网络内容(引用)
- PDF在线预览插件汇总与方案总结
- std__vector介绍
- 软件工程——四则运算3(C#)