Скачать презентацию Perl Занятие 4 Списки Список — это Скачать презентацию Perl Занятие 4 Списки Список — это

Perl_-_Zanyatie_4.pptx

  • Количество слайдов: 38

Perl Занятие 4 Perl Занятие 4

Списки Список - это упорядоченная последовательность отдельных скалярных данных в виде одного программного объекта Списки Список - это упорядоченная последовательность отдельных скалярных данных в виде одного программного объекта

Примеры списков (256, 512, 1024, 2048, 4096) ('John', 'Paul', 'George', 'Ringo') ( Примеры списков (256, 512, 1024, 2048, 4096) ('John', 'Paul', 'George', 'Ringo') ("Perl", 5. 8) ('One', $x+$y-$z, 2*5) ()

Операция диапазона 5. . 10 # возвратит список (5, 6, 7, 8, 9, 10) Операция диапазона 5. . 10 # возвратит список (5, 6, 7, 8, 9, 10) 5. 3. . 7. 1 # возвратит список (5. 3, 6. 3), т. к. 7. 3 > 7. 1 7. . 5 # возвратит пустой список (), т. к. 5 < 7 $m. . $n # диапазон, заданный значениями от $m до $n

Операция диапазона (-2. . 2) # список чисел (-2, -1, 0, 1, 2) (25, Операция диапазона (-2. . 2) # список чисел (-2, -1, 0, 1, 2) (25, 53, 77. . 79) # список (25, 53, 77, 78, 79) ('A'. . 'Z', 'a'. . 'z') # список заглавных и строчных букв ($start. . $finish) # список значений от $start до $finish

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

Имена переменных в списках ($a, $b, $c) = (10. . 12); # $a = Имена переменных в списках ($a, $b, $c) = (10. . 12); # $a = 10; $b = 11; $c = 12; ($day, $month, $year) = (18, 12, 1987); # день рождения Perl ($m, $n) = ($n, $m); # поменять местами значения $n и $m

Имена переменных в списках ($hh, $mm, $ss, $ms) = (10, 20, 30); # $ms Имена переменных в списках ($hh, $mm, $ss, $ms) = (10, 20, 30); # $ms не определено ($hh, $mm, $ss) = (10, 20, 30, 400); # 400 отброшено $scalar = (10, 20, 30, 400); # то же, что $scalar = 400;

Массивы Массив – переменная для хранения списка @variable # массив для хранения списка $variable Массивы Массив – переменная для хранения списка @variable # массив для хранения списка $variable # скаляр для хранения строки или числа

Массивы @empty = (); # пустой массив после присвоения пустого списка @months = (1. Массивы @empty = (); # пустой массив после присвоения пустого списка @months = (1. . 12); # массив со списком номеров месяцев

Массивы @days = qw(Пн Вт Ср Чт Пт Сб Вс); # массив дней недели Массивы @days = qw(Пн Вт Ср Чт Пт Сб Вс); # массив дней недели @week = @days; # копирование значения массива @days в @week

Массивы @array = 25; # литерал 25 рассматривается как список (25) ($first) = @array; Массивы @array = 25; # литерал 25 рассматривается как список (25) ($first) = @array; # в $first скопируется 1 -й элемент массива @first = @second = (1, 2, 3); # каскадное присваивание

Размер массива $array_size = @months; # число элементов (размер) массива $array_size = scalar @months; Размер массива $array_size = @months; # число элементов (размер) массива $array_size = scalar @months; # размер массива $last_index = $#array; # индекс последнего элемента @array

Списки внутри списков @small = (3, 4, 5); # этот массив будет вставлен в Списки внутри списков @small = (3, 4, 5); # этот массив будет вставлен в список @big = (1, 2, @small, 6. . 9); # то же, что @big = (1. . 9); @big = ((1, 2), (3. . 5), (6. . 9)); # то же, что и выше

Добавление элементов в список @array = ($new_element, @array); # добавить элемент в начало @array Добавление элементов в список @array = ($new_element, @array); # добавить элемент в начало @array = (@array, $new_element); # добавить элемент в конец @all = (@first, @second); # объединить два массива в один

Другие приемы работы со списками ($element 1, @array) = @array; # извлечь элемент из Другие приемы работы со списками ($element 1, @array) = @array; # извлечь элемент из начала (@array, $a, $b) = (1, 2, 3, 4, 5); # все 5 чисел попадут в @array

Обращение к элементам массива $array[0] # первый элемент массива с индексом 0 $array[1] # Обращение к элементам массива $array[0] # первый элемент массива с индексом 0 $array[1] # второй элемент массива с индексом 1 $array[$i] # i-й элемент массива, считая с 0

Обращение к элементам массива $array[-1] # последний элемент, то есть 1 -й от конца Обращение к элементам массива $array[-1] # последний элемент, то есть 1 -й от конца $array[-2] # предпоследний элемент, то есть 2 -й от конца $array[-$n] # n-й элемент массива, считая с конца

Сравнение двух массивов @array 1 = ( Сравнение двух массивов @array 1 = ("part 1", "part 2", "part 3", "part 4"); @array 2 = ("part 1", "PART 2", "part 3", "part 4"); if (@array 1 == @array 2) {. . . }

Срезы @array[0, 1] # то же, что ($array[0], $array[1]) @array[5. . 7] # то Срезы @array[0, 1] # то же, что ($array[0], $array[1]) @array[5. . 7] # то же, что ($array[5], $array[6], $array[7])

Срезы @array[3, 7, 1] # то же, что ($array[3], $array[7], $array[1]) @array[@indexes] # срез, Срезы @array[3, 7, 1] # то же, что ($array[3], $array[7], $array[1]) @array[@indexes] # срез, заданный массивом индексов @array[5] # список ($array[5]), а не скаляр $array[5]

Функции для работы с массивами • • • shift unshift push pop sort reverse Функции для работы с массивами • • • shift unshift push pop sort reverse • map • join • split

Функция shift $first = shift @array; # извлечь первый элемент в $first # синоним: Функция shift $first = shift @array; # извлечь первый элемент в $first # синоним: ($first, @array) = @array; while (my $first = shift @array) { # пока @array не опустеет print "Обработан элемент $first. "; print "Осталось ", scalar @array, " элементовn"; }

Функция shift my @names = ('Foo', 'Bar', 'Moo'); my $first = shift @names; print Функция shift my @names = ('Foo', 'Bar', 'Moo'); my $first = shift @names; print "$firstn"; # Foo print "@namesn"; # Bar Moo

Функция unshift @array, $e 1, $e 2, $e 3; # вставить значения в начало Функция unshift @array, $e 1, $e 2, $e 3; # вставить значения в начало # синоним: @array = ($e 1, $e 2, $e 3, @array);

Функция unshift my @names = ('Foo', 'Bar'); unshift @names, 'Moo'; print Функция unshift my @names = ('Foo', 'Bar'); unshift @names, 'Moo'; print "@namesn"; # Moo Foo Bar my @others = ('Darth', 'Vader'); unshift @names, @others; print "@namesn"; # Darth Vader Moo Foo Bar

Функция push @stack, $new; # добавить элемент в конец массива # синоним: @stack = Функция push @stack, $new; # добавить элемент в конец массива # синоним: @stack = (@stack, $new); my @names = ('Foo', 'Bar'); push @names, 'Moo'; print "@namesn"; # Foo Bar Moo my @others = ('Darth', 'Vader'); push @names, @others; print "@namesn"; # Foo Bar Moo Darth Vader

Функция pop $last = pop @stack; # изъять последний элемент массива my @names = Функция pop $last = pop @stack; # изъять последний элемент массива my @names = ('Foo', 'Bar', 'Baz'); my $last_one = pop @names; print "$last_onen"; # Baz print "@namesn"; # Foo Bar

Функция sort @unsorted = (12, 1, 128, 2, 25, 3, 400, 53); @sorted = Функция sort @unsorted = (12, 1, 128, 2, 25, 3, 400, 53); @sorted = sort @unsorted; # в @sorted будет (1, 128, 2, 25, 3, 400, 53) @sorted = sort {$a <=> $b } @unsorted; # в @sorted будет (1, 2, 3, 12, 25, 53, 128, 400)

Функция reverse @array = qw(Do What I Mean); # исходный список @backwards = reverse Функция reverse @array = qw(Do What I Mean); # исходный список @backwards = reverse @array; # остается неизменным # в @backwards будет ('Mean', 'I', 'What', 'Do')

Функция reverse @backwards = reverse(sort(@array)); # в @backwards будет ('What', 'Mean', 'I', 'Do') Функция reverse @backwards = reverse(sort(@array)); # в @backwards будет ('What', 'Mean', 'I', 'Do')

Функция map позволяет выполнить действия над всеми элементами массива, поэтому ее нередко используют вместо Функция map позволяет выполнить действия над всеми элементами массива, поэтому ее нередко используют вместо цикла. У этой функции есть две формы вызова: @result = map ВЫРАЖЕНИЕ, СПИСОК @result = map БЛОК СПИСОК

Функция map @result = map $_*10, (11, 32, 55); # работа со списком # Функция map @result = map $_*10, (11, 32, 55); # работа со списком # в @result будет (110, 320, 550)

Функция map @array = (11, 32, 55); # исходный массив @result = map {if Функция map @array = (11, 32, 55); # исходный массив @result = map {if ($_ > 20) {$_*=10; } else {$_; } } @array; # в @result будет (11, 320, 550)

Функция map @squares = map { $_ * $_ } @numbers; @squares = map Функция map @squares = map { $_ * $_ } @numbers; @squares = map { $_ > 5 ? ($_ * $_) : () } @numbers;

Функция split $string = '5: 6: 7: 8: 9: 10'; # исходная строка $delimiter Функция split $string = '5: 6: 7: 8: 9: 10'; # исходная строка $delimiter = ': '; # разделитель подстрок $limit = 3; # число элементов @strings = split $delimiter, $string, $limit; # разделение # в @strings содержится ('5', '6', '7: 8: 9: 10')

Функция join @array = (5. . 10); # объединяемый список $delimiter = ': '; Функция join @array = (5. . 10); # объединяемый список $delimiter = ': '; # разделитель элементов списка в строке $string = join $delimiter, @array; # объединение в строку # теперь $string содержит '5: 6: 7: 8: 9: 10'

Функции split и join print join(': ', split('b', 'abc')), Функции split и join print join(': ', split('b', 'abc')), "n"; print join(': ', split('', 'abc')), "n";