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进行操作

      参考博客:NumPy-快速处理数据--ndarray对象--多维数组的存取、结构体数组存取、内存对齐、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类进行操作

参考博客:《原 Python:类与结构体》 中的

有时候我们可能需要像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)

 

你可能感兴趣的:(编程技巧)