Основные операции со структурами данных
Создание пустых структур
NULL, :=, [].
Seq1:=NULL; |
List1:=NULL; List2:=NULL; List3:=[]; |
Set1:={}; Set2:=NULL; |
Tab1:=table(); |
Array1:=Array(-10..10); |
Vec1:=Vector(10); |
Matrix1:=Matrix(10,10); |
Связанные структуры
||, op, [ ], cat.
k:=1; Seq1:=seq(i,i=1..9); |
List1:=[Seq1]; |
a||Seq1; |
"Seq1"||(1..9); |
k||(1..9); |
cat(a,Seq1); |
op([List1,List1]); |
cat(Seq1,Seq1); |
Извлечение i-го элемента из структуры
[ ], op, select, has.
Seq1:=seq(i^2,i=1..9); List1:=[Seq1]; |
Set1:={Seq1}; |
Array1:=Array(1..9,1..9,[List1,0,List1,0,List1,List1]); |
i:=5; j:=2; List1[i]; op(i,List1); |
Array1[i,j]; op(i,Set1); |
element:=9; select(has,Set1,element); |
Определение числа элементов в структуре
nops.
List1:=[x,y,z]; Set1:={op(List1)}; nops(List1); |
nops(Set1); |
Создание подструктур
op, [ ].
Seq1:=x||(1..9); List1:=[Seq1]; |
Set1:={Seq1}; |
n:=nops(List1); |
List2:=[Seq1,Seq1]; |
n1:=2; n2:=5; List3:=[op(n1..n2,List1)]; |
List4:=List1[n1..n2]; Seq2:=op([(n1..n2)],List2); |
Set2:={op(n1..n2,Set1)}; Set3:=Set1[n1..n2]; |
Seq3:=op([(n1..n2)], Set1); |
Здесь n1 ≤ n2 ≤ n и n – число элементов List1.
Замена i-го элемента структуры
:=, [ ], subsop, subs, evalm.
Seq1:=x[i] $ i=1..9; List1:=[Seq1]; |
i:=5; j:=2; val:=20; List1[i]:=val; |
evaln(List1)=List1; |
List2:=subsop(i=val+1,List1); |
A:=Matrix(1..i,1..i,symbol=s); |
A1:=subs(s[i,j]=cos(a+b),A); |
Вставка элемента или нескольких элементов в структуру
[ ], op.
n1:=2; n2:=5; Seq1:=x[i] $ i=1..9; |
List1:=[Seq1]; |
List2:=[op(List1),A1]; |
List3:=[A1,op(List1)]; |
List4:=[op(n1..n2,List1),A1,A2,A3,A4,op(List2)]; |
Создание структуры согласно формуле или обладающей особыми свойствами
Например, нуль, равенство, разреженность, симметричность, диагональность и т. п.
f:=x->cos(x); n:=0; m:=3; |
List1:=[seq(f(i*t),i=n..m)]; |
Set1:=map(x->x"2,{x,y,z}); |
List2:=[op(Set1)]; |
Matrix1:=Matrix(m,m,(i,j)->i+j); |
Vector1:=Vector(m,i->i"2); |
with(LinearAlgebra): |
ZeroMatrix(m,m); |
IdentityMatrix(m,m); |