免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 莫良23
打印 上一主题 下一主题

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

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

那和我想的差不多,我只是列表的元素换成了类

论坛徽章:
0
12 [报告]
发表于 2012-02-29 15:27 |只看该作者
  1. #!/usr/bin/env python
  2. #coding=utf-8

  3. def main():

  4.     list1=[]
  5.     for i in range(5):
  6.         v1={
  7.             'vc':str(i)*3,
  8.             'vi':[i,2*i,3*i],
  9.         }
  10.         list1.append(v1)
  11.    
  12.     for i in list1:
  13.         print i

  14. if __name__ == '__main__':
  15.     main()
  16.     print 'done'
  17.    
复制代码
{'vi': [0, 0, 0], 'vc': '000'}
{'vi': [1, 2, 3], 'vc': '111'}
{'vi': [2, 4, 6], 'vc': '222'}
{'vi': [3, 6, 9], 'vc': '333'}
{'vi': [4, 8, 12], 'vc': '444'}
done

好像你说的也可以吧

论坛徽章:
11
技术图书徽章
日期:2014-03-01 14:44:34天蝎座
日期:2014-05-21 22:11:59金牛座
日期:2014-05-30 17:06:14
13 [报告]
发表于 2012-02-29 16:15 |只看该作者
回复 1# 莫良23
为什么要用Python模拟C的结构体数组?
实际问题中很少需要这么做,背景问题是什么?


   

论坛徽章:
0
14 [报告]
发表于 2012-02-29 17:27 |只看该作者
回复 13# timespace


    只是最近在用PYTHON照着一个C写一个类似报表格式处理的程序,在练习PYTHON

论坛徽章:
11
技术图书徽章
日期:2014-03-01 14:44:34天蝎座
日期:2014-05-21 22:11:59金牛座
日期:2014-05-30 17:06:14
15 [报告]
发表于 2012-02-29 18:45 |只看该作者
明白lz的需求
用法上最接近结构体的就是class了
当然,Python是动态数据类型,属性可以改变,更灵活

>>> class S:
        pass

>>> x = S()
>>> x.a = 1
>>> x.b = 'hi'
>>> y = S()
>>> y.a = ['hi']
>>> y.c = 2
>>> x.a, x.b, y.a, y.c
(1, 'hi', ['hi'], 2)
>>>

论坛徽章:
0
16 [报告]
发表于 2012-03-01 11:01 |只看该作者
回复 15# timespace


    谢谢,我觉得如果实现类似C语言中数组的顺序遍历访问结构体成员,PYTHON中最接近的就是列表了吧

论坛徽章:
11
技术图书徽章
日期:2014-03-01 14:44:34天蝎座
日期:2014-05-21 22:11:59金牛座
日期:2014-05-30 17:06:14
17 [报告]
发表于 2012-03-01 11:03 |只看该作者
回复 16# 莫良23
数组比较直观了,就是list


   

论坛徽章:
0
18 [报告]
发表于 2012-03-01 14:54 |只看该作者
喜欢用数组

论坛徽章:
0
19 [报告]
发表于 2012-04-10 07:29 |只看该作者
from ctypes import *

class TASK(Structure):
    _fields_ = [
        ("a", c_char_p),
        ("b", c_int)
    ]

mylist = []
task1 = TASK()
task1.a = "hello"
task1.b = 2
mylist.append(task1)

mylist就是你要的结构体数组

论坛徽章:
2
天蝎座
日期:2014-03-28 10:18:052015年亚洲杯之乌兹别克斯坦
日期:2015-02-10 11:32:25
20 [报告]
发表于 2012-04-10 09:06 |只看该作者
字典比类好
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP