2.3. Основные операции со структурами данных
Создать пустые структуры
- NULL
- :=
- []
Примеры:
- Seql:=NULL; Listl:=NULL; List2:=NULL; List3:=[]; Setl:={};
- Set2:=NULL;
- Tabl:=table();
- Arrayl:=Array(-10..10);
- Vecl:=Vector(10);
- Matrixl:=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)];
Создать структуру в соответствии с формулой или со специальными свойствами
- zero
- identity
- sparse
- symmetric
- diagonal
- и т. д.
Примеры:
- f:=x->cos(x); n:=0; m:=3; Listl:=[seq(f(i*t),i=n..m)];
- Setl:=map(x->x"2,{x,y,z});
- Matrixl:=Matrix(m,m,(i,j)->i+j); Vector1:=Vector(m,i->i"2);
- with(LinearAlgebra):
- ZeroMatrix(m,m); IdentityMatrix(m,m);
Применить функцию к каждому элементу структуры
- map
- apply
- applyop
Примеры:
- Setl:={a||(1..9)};
- func:=x->cos(x);
- Set2:=map(x->x"2,Setl); Set2:=map(func,Setl);
- apply(f,op(Setl)); applyop(func,{2,3},Setl);
