Chinaunix
标题:
Python中使用类似C语言的结构(Struct)
[打印本页]
作者:
sunny7476
时间:
2012-04-22 14:44
标题:
Python中使用类似C语言的结构(Struct)
在一篇帖子中看到一位朋友需要在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]的第一个成员使用的方法为:
a[0]["languageName"]
复制代码
截图如下
:
未命名.jpg
(53.46 KB, 下载次数: 102)
下载附件
2012-04-22 14:44 上传
作者:
千年老狼
时间:
2012-04-22 21:16
新手帮顶
lol
lol
作者:
sunny7476
时间:
2012-04-22 22:26
谢谢!
作者:
favory
时间:
2012-04-23 11:45
谢谢! 学习啦,帮顶!
作者:
qxhgd
时间:
2015-04-29 17:23
其实用字典应该也可以的吧
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2