Функции для обработки списков — КиберПедия 

Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...

Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...

Функции для обработки списков

2022-12-30 39
Функции для обработки списков 0.00 из 5.00 0 оценок
Заказать работу

В рассмотренных ранее в этой главе примерах мы познакомились с тем, как создать список, сохранить его в качестве значения переменной, организовать итерации по всем элементам списка иполучить доступ к индивидуальному элементу списка. В этом разделе вы познакомитесь еще с несколькими функциями, которые расширяют набор возможностей для работы со списками.

ФУНКЦИЯ REVERSE

Функция reverse реверсирует элементы списка. Она имеет следующий формат:

@new_list = reverse(@List);

Функция reverse реверсирует список и возвращает новый результирующий список. Следующий пример иллюстрирует использованиефункции reverse:

  @list = reverse(1..5); # Результат 5,4,3,2,1  @list = reverse(@list); # Результат 1,2,3,4,5

ФУНКЦИЯ SORT

Функция sort сортирует элементы списка. Она имеет следующийформат:

@new_list = sort(@List);

или

@new_list = sort(Subroutine @List);

или

@new_list = sort(BlockStatement @List);

Функция sort размещает элементы в списке, упорядочивая их всоответствии с порядковыми номерами символов в таблице ASCII-кодов. Так же как и функция reverse, функция sort возвращает в качестве значения новый список и не воздействует на исходный список. Следующий пример иллюстрирует использование функции sort:

@list = sort (1,5,2,3,4);  # Результат 1,2,3,4,5 @list = sort(1,2,10);       # 1,10,2 сортировка в ASCII

В подпрограмме или блоке можно изменять упорядочение, всоответствии с которым выполняется сортировка. Следующий примериллюстрирует использование функции sort.

@list = sort({$a <=> $b} (2,1,10));    # @list 1,2,10 @list = sort({$b <=> $a}) (2,1,10);    # @list 10,2,1 sub mycomp  {      $b <=> $a  } @list = sort(mycomp (2,1,10)); # @list 10,2,1

ФУНКЦИИ РАБОТЫ С МАССИВАМИ

Как известно, массив представляет собой структуру данных,содержащую одно или несколько значений величин одного типа, например, 100 имен студентов. Perl содержит несколько встроенныхфункций, которые помогают работать с элементами массива. В следующих разделах рассматривается несколько основных функций дляобработки массивов.

ФУНКЦИИ PUSH И POP

Скрипты языка Perl используют фикции push и pop для того,чтобы добавлять и удалять элементы с конца массива. Иными словами, функции push и pop позволяют скриптам выполнять операции состеком по принципу: последним вошел, первым вышел. Функция pushимеет следующий формат:

push(@ARRAY, LIST);

Следующий фрагмент иллюстрирует использование функции push:

@list = (); push(@list,10,20);  # @list теперь (10,20) push(@list,1..3);  # @list теперь (10,20,1,2,3)

В противоположность этому функция pop удаляет элемент, который был вставлен в стек последним и возвращает значение этогоэлемента. Функция pop имеет следующий формат:

$value = pop(@ARRAY);

Следующий фрагмент программы иллюстрирует использование функции pop:

# Возьмём @list из предыдущего примера  print pop(@list);         # Выведет 3  print pop(@list);         # Выведет 2     # Теперь @list (10,20)

ФУНКЦИЯ SHIFT

Функция shift удаляет и возвращает элемент из начала массива. Эта функция аналогична функции pop с тем только отличием, чтоработает от начала массива по принципу FIFO (<первым вошел, первым вышел>). Функция shift имеет следующий формат:

$value = shift(@ARRAY);

Следующий фрагмент программы иллюстрирует использование функции shift:

# Возьмём @list из предыдущего примера

print shift(@list); # Выведет 10 print shift(@list); # Выведет 20   # Теперь @list ()

ФУНКЦИЯ UNSHIFT

Функция unshift добавляет один или больше элементов к началу массива. Она имеет следующий код:

unshift(@Array, List);

Следующий фрагмент программы иллюстрирует использование функции unshift:

# @list = () unshift(@list,5,10,20); # @list (5,10,20) unshift(@list, 1..3);       # @list (1,2,3,5,10,20)

ФУНКЦИЯ SPLICE

Скрипты языка Perl используют функцию splice для того, чтобы извлекать элементы из списка, заменяя их элементами другогосписка. Она имеет следующий формат:

splice(@Array, Offset[, Count[, List]]);

Функция splice извлекает указанное число элементов {Count)из массива (@Аrraу), начиная с элемента, на который указывает величина сдвига (Offset), и заменяет элементы элементами другогосписка (List). Если в вызове функции не указан параметр Count,функция извлекает элементы до самого конца массива. Если в вызове функции не указан список, элементами которого замещаются исходные элементы, то функция не добавляет никаких элементов к первоначальному списку. Следующее выражение иллюстрирует использование функции splice:

@list = 1..10; splice(@list,1,8,5,6); # @list = (1,5,6,10)

ФУНКЦИЯ SCALAR

Функция scalar определяет число элементов в списке. Онаимеет следующий формат:

 Rsult = scalar(List);

Обычно скрипты языка Perl не нуждаются в использовании функции scalar применительно к массивам, потому что когда скрипт обращается к массиву, записывая его в скалярном контексте, то онполучает в качестве возвращаемой величины число элементов массива. Тем не менее, скрипты могут использовать функцию scalar вслучаях, когда контекст является неоднозначным или если список неявляется массивом. Следующее выражение иллюстрирует использование функции scalar.

@list = 1..10; print scalar(@list);        # Выведет размер @list

ФУНКЦИЯ GREP

Функция grep фильтрует элементы списка, для которых заданное выражение принимает значение <ложно>. Она имеет следующийформат:

@list = grep(Expression, List);

Функция grep просматривает элементы списка, подставляя их вкачестве аргумента в заданное выражение. Функция grep присваивает текущее выражение элемента списка переменной $_ и вычисляетзаданное выражение. Если полученное выражение является истинным,то функция grep добавляет этот элемент к результирующему списку.Следующий фрагмент программы иллюстрирует использование функцииgrep:

@list = grep($_ & 1, 1..10); # @list (1,3,5,7,9) @list = ('a', '' 'b');       # @list ('a',' ','b') @list = grep($_ eq '', @list); # @list ('a','b')

Примечание: Если выражение, модифицирует переменную. $_, то исходный список также будет модифицирован.


Поделиться с друзьями:

Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...

Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...

Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.008 с.