- 论坛徽章:
- 3
|
在一篇帖子中看到一位朋友需要在Python中使用类似C语言中的结构体。原本想直接回复的,后来想,为了方便更多的人看到,就新开一个帖子了。
在Python中使用结构体,所要做的仅仅是下载NumPy,用其中的dtype来实现,实现方法为:
首先,如同C语言一样,新建结构体:- Python:
- A = numpy.dtype({'names': ['languageName', 'ranking'],
- 'formats': ['S10', 'i']}, align = True)
复制代码 C:- typedef struct A
- {
- char a[10];
- int b;
- }SA
复制代码 解释,'names'和'formats'都是结构体数组中的键域,不能更改成其他名称。names字段相当于结构体中的每个成员,formats字段为结构体中按序对应的成员的格式,如本例中formats字段第一项内容为S10,表示对应的names成员languageName的格式为长度10个字节的字符串;同样,formats的第二项"i"表示names第二个成为为32位的整型。
最后的align = True是让Python中的结构数组内存对齐。详见张若愚所著的《Python科学计算》P31.
接下来,新建一个结构数组a:- a = numpy.array([("C", 1), ("Java", 2), ("Python", 8)], dtype = A)
复制代码 现在,就可以像C语言中一样使用结构数组a了,所不同的是访问a[0]的第一个成员使用的方法为:截图如下:
|
|