前言
在數學計算中, 序列、集合與列表是最常用的幾種基本數據類型。在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