如何在python中实现类似matlab的结构数组?
matlab代码:
cluster.c=[]
cluster.indiv=[]
答案 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