# list

объект Scilab'а и функция определения списка

## Последовательность вызова

    list(a1, ..., an)

## Описание

Создаёт список `list` с элементами `ai`, которые являются произвольными объектами Scilab'а (`matrix`, `list`,...). Тип объекта `list` равен 15. `list()` создаёт пустой список (0 элементов).

## Операции со списками

выделение

  `[x,y,z,...]=L(v)`, где `v` - вектор индексов; `[x,y,z,...]=L(:)` выделяет все элементы.

вставка на место индекса i

  `L(i)=a` (заметьте, что это не ошибка использовать `L(i)=a` с `i > 1 + size(L)`, но некоторые элементы списка тогда не определены, и их выделение вызовет ошибку).

добавление элемента в хвост

  `L($+1)=e`.

добавление элемента в начало

  `L(0)=e`.

  После этой операции `e` имеет индекс 1, исходные элементы будут сдвинуты вправо.

удаление

  `L(i)=null()` удаляет `i`-тый элемент списка `L`.

конкатенация двух списков

  `L3 = lstcat(L1,L2)`.

число элементов списка

  вы можете использовать либо `nb_elm = size(L)`, либо `nb_elm = length(L)`.

итерации со списками

  можно использовать список `L` в цикле for: `for e=L,...,end` - цикл с числом итераций `length(L)`, переменная цикла `e` будет равна `L(i)` на `i`-той итерации.

## Примечания

Scilab предлагает также другие виды списков, тип tlist (типизированный список) и тип mlist (матричноориентированный список), которые полезны для определения нового типа данных с механизмом перегрузки операторов (гиперматрицы, которые являются многомерными массивами, в Scilab'е на самом деле имеют тип mlist).

Также доступны структуры struct Matlab'а.

## Примеры

    l = list(1,["a" "b"]) // объявление основного списка с элементом типа
                          // double и вектором двух строковых значений
    size(l) // размер равен 2
    // l(0) - Не существует!
    l(1) // доступ к значению типа double
    l(2) // доступ к вектору строковых значений
    size(l(2)) // размер равен 1,2

    l(0) = "foo" // вставка в начало списка
    // l(0) - по-прежнему не существует
    l(1) // равно "foo"

    l($+1) = "hello" // вставка в конец списка
    l(2) = "toto" // перезапись моего значения типа double
    l(3) = rand(1,2) // перезапись моего вектора строковых значений

    l(3) = null() // удаление третьего элемента

    lbis = list("gewurtz", "caipirina" ,"debug") // объявление нового списка
    lter = lstcat(l,lbis) // слияние двух списков
    size(lter) - size(lbis) - size(l)  // должен быть ноль

## Смотрите также

- null
- lstcat
- tlist
- mlist
- вставка
- выделение
- size
- length