免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 38929 | 回复: 24
打印 上一主题 下一主题

PYTHON怎么实现类似C里的结构体数组 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-02-29 14:06 |只看该作者 |倒序浏览
用list和class这种组合吗?

论坛徽章:
0
2 [报告]
发表于 2012-02-29 14:18 |只看该作者
忘了c里面是啥样了,用dict呢

论坛徽章:
0
3 [报告]
发表于 2012-02-29 14:48 |只看该作者
回复 2# askandstudy


    举个例子吧
结构体SA定义
  1. typedef struct A
  2. {
  3.     char a[10];
  4.     int b;
  5. }SA
复制代码
然后定义结构体数组SA s_a[5];

python里怎么实现类似变量s_a[5]

论坛徽章:
0
4 [报告]
发表于 2012-02-29 14:55 |只看该作者
>>> v1={1:'aa','abc':22,'vv':range(5)}
>>> for i in v1:print i
...
1
abc
vv
>>> for k,v in v1.items():print k,v
...
1 aa
abc 22
vv [0, 1, 2, 3, 4]
>>>

字典应该可以吧

论坛徽章:
0
5 [报告]
发表于 2012-02-29 15:08 |只看该作者
回复 4# askandstudy


    看了你的例子,我不是很明白,就拿我刚才举得例子
在C语言里,我要获取s_a数组中第2个成员的变量b,就直接s_a[1].b
PYTHON该怎么做?

论坛徽章:
0
6 [报告]
发表于 2012-02-29 15:11 |只看该作者
是纯python实现类结构效果, 还是python读取现有lib的结构体

论坛徽章:
0
7 [报告]
发表于 2012-02-29 15:12 |只看该作者
本帖最后由 askandstudy 于 2012-02-29 15:14 编辑
  1. >>> v1={1:'aa','abc':22,'vv':range(5)}
  2. >>> v1['abc']
  3. 22
  4. >>> v1['vv']
  5. [0, 1, 2, 3, 4]
  6. >>> v1['vv'][3]
  7. 3
  8. >>> v1[1]
  9. 'aa'
  10. >>>
复制代码
这里的v1是个有三个元素项的字段,key:value对的形式表示

这样不知明白没有

论坛徽章:
0
8 [报告]
发表于 2012-02-29 15:14 |只看该作者
回复 6# 3227049


    是实现
我目前知道的是C的结构体定义,可以由PYTHON的CLASS来实现
C的数组定义可以由PYTHON的LIST来实现
那么结构体数组,用LIST和CLASS结合实现是不是有点太笨了,有什么好办法吗?

论坛徽章:
0
9 [报告]
发表于 2012-02-29 15:19 |只看该作者
定义个列表,每个列表元素是个字典,似乎类似这样吧

论坛徽章:
0
10 [报告]
发表于 2012-02-29 15:19 |只看该作者
回复 7# askandstudy


    哦,就拿我说的例子吧,
先用一个class 实现一个结构体
  1. class a:
  2.     def __init__(self):
  3.        self.a=" "
  4.        self.b=0
复制代码
a1=a()
然后再定义一个字典s,将类的实例统统放进去?
  1. s={1:a1, 2:a2, 3:a3, 4:a4, 5:a5}
复制代码
是这么理解的吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP