2

我有一个名为的列表Materials

MATERIALS = [
    'AR',
    'ARU',
    'ARC',
    'CON',
    'CSR',
    'MCR',
    'USF',
    ['AR', 'ARU', 'ARC', 'MCR', 'CSR'],
    ['AR', 'ARU', 'ARC', 'MCR'],
    ['AR', 'ARU', 'ARC'],
]

正如您首先看到的,它单独存储每个元素,然后对元素进行分组。

存储此混合类型列表的适当数据结构是什么?

编辑以反映以下评论:

  1. 通过存储,我的意思是,将变量存储在内存中的适当方法是什么
  2. 此列表说明了将输入数值模型的不同测试用例。因此,第一项是对 MATERIALS 中的每个项目进行建模。
  3. 我想避免冗余并遵循最佳实践
4

1 回答 1

2

我会去@joel-cornett 评论,即存储数据类型的一致性。

MATERIALS = [
    ['AR'],
    ['ARU'],
    ['ARC'],
    ['CON'],
    ['CSR'],
    ['MCR'],
    ['USF'],
    ['AR', 'ARU', 'ARC', 'MCR', 'CSR'],
    ['AR', 'ARU', 'ARC', 'MCR'],
    ['AR', 'ARU', 'ARC'],
]

如果这不适合你,那么有两个列表。如果你事先知道你的模型,你最好使用变量而不是字符串:

AR = 'AR'
ARU = 'ARU'
ARC = 'ARC'
CON = 'CON'
CSR = 'CSR'
MCR = 'MCR'
USF = 'USF'

MATERIALS_SIMPLE = [
    AR,
    ARU,
    ARC,
    CON,
    CSR,
    MCR,
    USF,
]

MATERIALS = [
    [AR, ARU, ARC, MCR, CSR],
    [AR, ARU, ARC, MCR],
    [AR, ARU, ARC],
]

只要您在性能方面不受限制,我会告诉您不要费心优化内存存储。例如,如果您只需要处理数据,只要您的数据不大于 RAM,就可以了。

至于冗余,如果您的意思是某些列表共享一个公共前缀并且您想利用它,您可以使用trie数据结构(http://en.wikipedia.org/wiki/Trie)。但我不推荐它,因为它的复杂性和缺乏可读性。

于 2013-07-11T22:30:22.047 回答