前言
在数学计算中, 序列、集合与列表是最常用的几种基本数据类型。在Maple中, 有相应的数据结构与之对应。本文就这几种数据结构在Maple的使用方法进行简要说明。
定义
- sequence, es
一序列的值 - set {es}
无序的值的序列, 使用{}表示, 不能重复。 - list [es]
有序的值的序列, 使用[]表示, 可以重复。
set和list均可用numelems() 函数计算, 如numelems(S), numelems(L)。
简介
- 集合是用大括号
{}
括起来的无序表达式的无序序列, 从数学意义上表示一个集合。 - 列表是括在方括号
[]
中的表达式的有序序列。表达式的顺序是es的顺序。 - 注意, es可能为空, 因此空集用
{ }
表示, 空列表用[ ]
表示。 - 在输出中, 空集的排版为。
- 集或列表S的元素数由 求出。
访问元素
- 可以通过选择操作来提取集合或列表的元素。因此, 如果S是集合或列表, 则 选择第 个元素。或者, 可以使用 。元素从1开始编号, 因此 提取第一个元素。也可以使用负下标, 如 选择最后一个元素, 选择第二个元素, 依此类推。
- 可以提取列表或集合 的多个元素。使用 选择子序列 。如果 是集合, 则选择 选择子集 。如果 是一个列表, 则选择 选择子列表 。同样地, 列表也可以使用负下标。
- 列表和集合可以嵌套, 在这种情况下, 可以通过以下两种方式之一进行选择: 或 。
- 若要提取列表的内容或将 设置为序列, 请使用 函数或空选择运算符 。
修改元素
注意:对列表或集合的以下修改会导致创建新列表或集合, 而不是就地修改原始列表或集合。为了节省空间和时间, 当数据的数量或对其的修改数量很大时, 使用Array可能会更好。有关可变和不可变数据结构的更多信息, 请参阅《 Maple编程指南》的“基本数据结构”一章。
- 通过 将元素 追加到列表 。使用并运算符 将元素x插入到集合S中。
- 可以用 来将列表 的第 个元素替换为 。
- 为了方便起见, 操作 也起作用, 但仅适用于简短列表。除非知道列表很小, 否则不建议使用此操作。
- 删除列表 的第 个元素是 。使用减号运算符 从集合 中删除元素 。
设置和列出操作
- 要测试元素x是在列表中还是集合L中, 请使用 $member(x, L)或L()中的x。
- 若要测试集合S是否是集合T的子集, 请使用子集运算符S子集T()。
- 要找到两个集合S和T的交集, 请使用S与T()相交。
- 要找到两个集合S和T的并集, 请使用S union T()。
- 要找到两组S和T的差, 请使用S减去T()。
- 有关这些设置操作的更多信息, 请参见设置运算符。
- 可以在软件包ListTools中找到更多列表操作。
设置顺序
集合具有确定性的顺序, 对于大多数对象, 该顺序不基于运行时属性。这意味着当输入{b, c, a}时, 无论您何时创建该集合, 定单都将固定为{a, b, c}。该规则的一个明显例外是, 当一个集合包含多个相同类型的可变对象时。例如, 集合内的两个向量可以在不同的会话中以任一顺序出现。
通常, 对象排序首先由可快速识别的特征(例如其类别或大小)确定。默认比较顺序按以下顺序检查属性:
- 对象ID:这导致将相同类型的数据结构分组在一起。例如, 整数将在精确的有理数, 浮点数和复数之前出现。
- 对象长度:这会将相同大小的对象组合在一起。 “长度”是基础数据结构的属性。结果, {-2 ^ 200, -2 ^ 100}的数字顺序不是递增的, {bb, aaaaaaaa}的字母顺序也不是;在这两种情况下, 较短的数据结构首先出现。
- 字典顺序或数字顺序:此数字按递增的数字顺序排列, 字符串按字典顺序排列。
- 对组件递归:这将根据其子组件的上述属性对复合对象进行排序。例如{f(z), g(a)}将传递上述属性, 因为f(z)和g(a)都是相同长度的函数对象。因此, 下一级别的排序将比较每个函数的名称f和g, 它们将属于规则3。请注意, 如果唯一表示形式, 则{x + 1,1 + y}之类的表达式的排序可能仍取决于会话x + 1的x的顺序为1 + x, 或者第二个表达式是y + 1而不是1 + y。
- 地址:在某些情况下, 对象在各个方面都是相同的, 例如本地名称x和全局名称x。发生这种情况时, 将使用给定对象的机器地址。
参考资料
[1] https://www.maplesoft.com/support/help/maple/view.aspx?path=set