如何在python中实现类似于matlab的结构数组?

时间:2019-01-09 20:11:14

标签: python python-3.x matlab

如何在python中实现类似matlab的结构数组?

matlab代码:

cluster.c=[]
cluster.indiv=[]

1 个答案:

答案 0 :(得分:0)

尽管您可以在Python中执行此操作(如下文所述),但这可能不是最佳或大多数pythonic方法。对于必须查看您的代码的其他用户(包括3个月内的您自己),此语法非常混乱。例如,考虑一下如何处理名称冲突,未定义的值以及遍历属性。

请改为考虑将数据存储在更适合于此的数据结构中,例如dictionary。然后,您可以将所有内容存储在

cluster = {'c':[],'indiv':[]}

以不良方式模仿Matlab

您可以将属性分配给python中的任何可变对象。 如果仅需要一个对象来存储数据,则可以通过以下方式定义不带任何功能的自定义类:

class CustomStruct():
    pass

那么你就可以拥有

struct=CustomStruct()
struct.c=[]

并以此方式更改或请求类的属性。

更好的方法:

如果您真的想将这些东西存储为对象的属性,那么最好在该类的init中定义变量。

class BetterStruct():
    def __init__(self):
        self.c=[]
        self.indiv=[]

通过这种方式,查看您的代码的用户可以立即理解期望值,并且您可以保证以适当的方式初始化它们。

允许数据控制

如果要在存储时验证数据,或者一旦用户请求就必须计算数据(而不是不断存储),请考虑使用Python property decorators