python实现结构体数组(初始化并赋值)
C语⾔中结构体数组概念及定义
⼀个结构体变量可以存放⼀个学⽣的⼀组信息,可是如果有 10 个学⽣呢?难道要定义 10 个结构体变量吗?难道上⾯的程序要复制和粘贴 10 次吗?
很明显不可能,这时就要使⽤数组。结构体中也有数组,称为结构体数组。结构体数组的每⼀个元素都是⼀个结构体类型的变量,都包含结构体中所有的成员项。
定义结构体数组的⽅法很简单,同定义结构体变量是⼀样的,只不过将变量改成数组。C语⾔中结构体数组定义很简单,⽐如:
struct STU
{
char name[20];
int age;
char sex;
char num[20];
};                  //定义STU结构体
struct STU stu[10];  //包含10个STU结构体类型的结构体数组
或者:
typedef struct
{
char name[20];
int age;
char sex;
char num[20];
}Student;                  //定义Student结构体
Student stu[10];  //包含10个Student结构体类型的结构体数组
假如需要利⽤python实现以下结构体数组,并且需要赋值:
typedef struct
{
char  id;
float  px;
float py;
float vx;
float  vy;
} GPS;
GPS  Data[2];
#赋值
Data[2]={{'00',1.1,1.2,1.3,1.4},{'01',2.1,2.2,2.3,2.4}}
python中结构体数组构建⽅法
⽅法⼀:利⽤NumPy进⾏操作
参考博客:
import numpy as np
GPSType=np.dtype({'names':['id','px','py','vx','vy'],'formats':['S32','f','f','f','f']})
Data=np.array([('zero',0.,0.)]*10,dtype=GPSType)  #创建Data[2]
#结构体数组中成员赋值
#Data[0]
Data[0]['id']='00'
Data[0]['px']=1.1
Data[0]['py']=1.2
Data[0]['vx']=1.3
Data[0]['vy']=1.4
#Data[1]
Data[1]['id']='01'
Data[1]['px']=2.1
Data[1]['py']=2.2
Data[1]['vx']=2.3
Data[1]['vy']=2.4
⽅法⼆:利⽤Class类进⾏操作
参考博客:《》 中的
有时候我们可能需要像C中的struct那样的数据类型,把少量的数据项放在⼀起。Python中可以使⽤定义⼀个空类来实现这⼀点:
class GPS:
pass
Data = [GPS()]*2
Data=[GPS(),GPS()]
#Data[0]
Data[0].id='00'
Data[0].px=1.1
Data[0].py=1.2
Data[0].vx=1.3
Data[0].vy=1.4
#Data[1]
Data[1].id='01'
定义数组初始化Data[1].px=2.1
Data[1].py=2.2
Data[1].vx=2.3
Data[1].vy=2.4
print(Data[0],Data[1])
print(Data[0].px)