最近在python中做一些实践,同时回想起LabVIEW中的一些做法,发现两者的关联性很大。在仔细研读python的数据结构后,转到LabVIEW发现了一个以前没有关注的数据结构-群体。根据NI介绍:群体是聚合同类数据的容器。群体中的每个对象为群体的元素或条目。使用群体数据类型创建用于存储和访问数据的高性能数据结构。LabVIEW包含以下群体数据类型:集合和映射表。
LabVIEW群体数据结构与Python数据结构对应关系如下:
都是编写语言,那么结构的功能基本一致。群体数据类型的键值(集合的元素、映射表的键值)都是不可变对象,这在Python或者LabVIEW都是一样的。
1、集合将相同类型的唯一有序数据元素归为一组。
笔者新建了一个数值集合,生成的集合是有序的,按照大小顺序排列。相比未排序的数据结构(如数组),集合能够对数据进行更快地搜索、插入、更改及移除操作。但是,集合按照有序顺序维护元素的操作将占用内存开销,数组不占用内存开销。
2、映射表将 键-值 对按照有序顺序分组,其中所有的键均为唯一。
插入 键-值 对至映射表将执行两种操作之一:添加键-值对至映射表,或在映射表中使用新值替换相关键的现有值,具体执行哪个操作取决于该键是否已经存在于映射表内。笔者新建的映射表中,键值也会按照大小顺序排列。
既然有这样的数据结构,应用场景是哪里呢?应用场景是根据数据结构的特性来决定的,群体数据类型具有快速操作和键值唯一的特性,那么应用场景就有了。
1、需要快速计算的场合,可以牺牲一点内存来换取快速的迭代计算;
2、键值唯一的特性保证数据唯一性,摒弃重复数据,防止重复写入;
3、取代簇变量的一一对应关系。笔者以前使用簇变量来完成特定数据的查找,可以用映射表来完成这个功能。
LabVIEW中使用群体操作数据的范例,笔者觉得Word Counting和Registration Map Usage两个案例颇有意义,可以参考学习,而且这两个案例是有应用场景的,待你发觉。
网友评论