Finding a subsequence or a sublist

### 6.1.7 Finding a subsequence or a sublist

The bracket notation used to find elements of sequences and lists can also be used to extract a range of elements. If S is a sequence or list of size n, then S[n1..n2] returns the subsequence or sublist of S consisting of the elements with indices from n1 to n2, where 0 ≤ n1≤ n2 < s (in Xcas syntax mode) or 0 < n1≤ n2 ≤ s in other syntax modes.

For lists, the at command can also be used to get a sublist.

- at takes two arguments:
  - L, a list.
  - n1..n2, a range of integers.
- at(L,n1..n2) returns the sublist of L consisting of the elements with indices from n1 to n2.

Again, at cannot be used for sequences.

An alternative to using at for finding a sublist is the mid command, which again cannot be used for sequences.

- mid takes two mandatory and one optional argument:
  - L, a list.
  - n, the index of the beginning of the sublist.
  - Optionally, l, the length of the sublist.
- mid(L,n ⟨,l⟩) returns the sublist of L with index beginning at n. With the option l, the length of the sublist will be l, otherwise it will go to the end of the list L.

#### Examples

[0,1,2,3,4][1..3]

| ⎡ ⎣ | 1,2,3 | ⎤ ⎦

(A,B,C,D,E)[1..3]

B,C,D |  |  |  |  |  |  |  |  |  |

at([1,2,3,4,5],2..4

| ⎡ ⎣ | 3,4,5 | ⎤ ⎦

mid([0,1,2,3,4,5],2,3)

| ⎡ ⎣ | 2,3,4 | ⎤ ⎦

mid([0,1,2,3,4,5],2)

| ⎡ ⎣ | 2,3,4,5 | ⎤ ⎦