Основные элементы языка программирования Icon. Чанышев О.Г. - 15 стр.

UptoLike

Составители: 

29
6. Списки
Списокпоследовательность элементов, разделенных запя-
той и заключенных в квадратные скобки. Элементами одного спи-
ска могут быть различные структуры данных, допустимые в Icon'е,
в том числе и списки.
6.1. Создание списков
Списки могут быть созданы следующими способами:
L:=[] – создается пустой список.
L:=list() – создается пустой список.
L:=[e1,e2,...,eN] – создается список из N элементов.
L:=list(N) – создается
список из N элементов, инициализи-
рованных значением &null (специальная константа, означающая
отсутствие значения у какого-либо элемента).
L:=list(N,Val) – создается список из N элементов, каждый из
которых имеет значение Val.
6.2. Индексированный доступ к элементам списков
Индексированный доступ к элментам списка вполне похож
на доступ к элементам строки.
L[1], L[2], ...L[*L] – элементы списка от 1-го до последнего.
L[5][2] – второй
элемент пятого подсписка в списке L.
L[3:5] – подсписок из двух элементов (3-й и 4-й).
6.3. Операции со списками
!L Возвращает первый элемент списка. В соответствующем
контексте генерирует все элементы списка:
?L возвращает случайный элемент списка.
L ||| M объединение списков.
L === M операция сравнения на равенство успешна, если
списки одинаковы.
L ~=== M операция сравнения на не равенство успешна, ес-
ли списки различны.
30
6.4. Функции для работы со списками
copy(L) – создает копию L (L1:=copy(L)).
set(L) – создает множество из списка (seT:=set(L)).
sort(L) – создает новый отсортированный список. Элементы
одного типа группируются вместе, составные объекты размеща-
ются в своих группах в порядке их создания.
sortf(L,i) – создает новый список. При этом записи и списки
с числом полей не больше i располагаются в порядке возрастания
их i-х полей.
Пример:
procedure main()
L:=[[1,7,5],[7,6,9],[11,67,7]]
every L1:=!sortf(L,2) do every write(" ",!L1)
end
Выход: 7 6 9 1 7 5 11 67 7
6.5. Списки как стеки или очереди
Следующие функции позволяют работать со списками как
со стеками или очередями.
get(L) – возвращает и удаляет из списка первый элемент.
pop(L) – то же самое.
pull(L) – возвращает и удаляет из списка последний элемент.
push(L,x) – момещает x в список L в качестве 1-го элемента,
смещая остальные
на одну позицию вправо.
push(L,x1,x2,...,xN) – эквивалентно многократному исполь-
зованию push с двумя аргументами.
put(L,x),put(L,x1,x2,...,xN) – вставка элементов в конец спи-
ска.
Пример
: вариант объединения списков L и M: every
put(L,!M).
                           6. Списки                                        6.4. Функции для работы со списками
                                                                             copy(L) – создает копию L (L1:=copy(L)).
      Список – последовательность элементов, разделенных запя-               set(L) – создает множество из списка (seT:=set(L)).
той и заключенных в квадратные скобки. Элементами одного спи-                sort(L) – создает новый отсортированный список. Элементы
ска могут быть различные структуры данных, допустимые в Icon'е,       одного типа группируются вместе, составные объекты размеща-
в том числе и списки.                                                 ются в своих группах в порядке их создания.
                                                                             sortf(L,i) – создает новый список. При этом записи и списки
      6.1. Создание списков                                           с числом полей не больше i располагаются в порядке возрастания
      Списки могут быть созданы следующими способами:                 их i-х полей.
      L:=[] – создается пустой список.                                       Пример:
      L:=list() – создается пустой список.                                   procedure main()
      L:=[e1,e2,...,eN] – создается список из N элементов.                   L:=[[1,7,5],[7,6,9],[11,67,7]]
      L:=list(N) – создается список из N элементов, инициализи-              every L1:=!sortf(L,2) do every write(" ",!L1)
рованных значением &null (специальная константа, означающая                  end
отсутствие значения у какого-либо элемента).                                 Выход: 7 6 9 1 7 5 11 67 7
      L:=list(N,Val) – создается список из N элементов, каждый из
которых имеет значение Val.                                                 6.5. Списки как стеки или очереди
                                                                            Следующие функции позволяют работать со списками как
      6.2. Индексированный доступ к элементам списков                 со стеками или очередями.
      Индексированный доступ к элментам списка вполне похож                 get(L) – возвращает и удаляет из списка первый элемент.
на доступ к элементам строки.                                               pop(L) – то же самое.
      L[1], L[2], ...L[*L] – элементы списка от 1-го до последнего.         pull(L) – возвращает и удаляет из списка последний элемент.
      L[5][2] – второй элемент пятого подсписка в списке L.                 push(L,x) – момещает x в список L в качестве 1-го элемента,
      L[3:5] – подсписок из двух элементов (3-й и 4-й).               смещая остальные на одну позицию вправо.
                                                                            push(L,x1,x2,...,xN) – эквивалентно многократному исполь-
      6.3. Операции со списками                                       зованию push с двумя аргументами.
                                                                            put(L,x),put(L,x1,x2,...,xN) – вставка элементов в конец спи-
      !L Возвращает первый элемент списка. В соответствующем
                                                                      ска.
контексте генерирует все элементы списка:
                                                                            Пример: вариант объединения списков L и M: every
      ?L возвращает случайный элемент списка.                         put(L,!M).
      L ||| M объединение списков.
      L === M операция сравнения на равенство успешна, если
списки одинаковы.
      L ~=== M операция сравнения на не равенство успешна, ес-
ли списки различны.



                                29                                                                    30