Массивы в языке Python
В языке Python нет такой структуры данных как «массив». Вместо этого для хранения группы однотипных (и не только од-нотипных!) объектов используют списки – объекты типа list.
В отличие от массивов, список – это динамическая структу-ра, его размер можно изменять во время выполнения програм-мы (удалять и добавлять элементы), при этом все операции по управлению памятью берёт на себя транслятор.
Далее, говоря о списках, мы будем использовать слово «массив», потому что чаще всего списки в языке Python исполь-зуются именно в роли массива, то есть для хранения однотип-ных значений.
Создание массива
Массив (список) можно создать перечислением элементов через запятую в квадратных скобках, например, так:
A = [1, 3, 4, 23, 5]
print( type(A) )
Такая программа выведет
'list'>
Это означает, что с точки зрения языка Python массив – это объ-
ект типа list.
74 http://kpolyakov.spb.ru
05.04.2019 Информатика, 8 класс К.Ю. Поляков, Е.А. Еремин
Массив можно составить не только из чисел, но и из данных любых типов, например, символьных строк:
A = ["Вася","Петя","Коля","Маша","Даша"]
Массивы можно «складывать» с помощью знака +, напри-
мер, приведённый выше числовой массив можно было постро-ить сложением нескольких списков:
A = [1, 3] + [4, 23] + [5]
Сложение одинаковых массивов заменяется умножением *. Оператор
A = [0]*10
создаёт новый массив из 10 элементов (выделяет для них место в памяти) и заполняет их нулями.
Длина массива (количество элементов в нём) определяется с
помощью функции len:
N = len(A)
Таким образом, в любой момент массив «знает» свой размер.
Иногда размер массива хранят в отдельной переменной:
N = 10
A = [0]*N
В этом случае очень легко переделать программу для работы с массивом другого размера: достаточно просто изменить значе-ние N в первой строке программы.
Обращение к элементу массива
Каждый элемент массива имеет свой номер (индекс). Ис-пользуя индекс, можно сразу обратиться к любому элементу массива. Поэтому говорят, что массив – это структура данных с произвольным доступом.
Индекс – это значение, которое указывает на конкретный эле-мент массива.
Нумерация элементов массивов (и символьных строк) в Python всегда начинается с нуля, второй по счёту элемент име-ет номер 1 и т.д.
Для того чтобы обратиться к элементу массива (прочитать или изменить его значение), нужно записать имя массива и в
75 http://kpolyakov.spb.ru
квадратных скобках A[2].
массив A
05.04.2019 Информатика, 8 класс К.Ю. Поляков, Е.А. Еремин
индекс нужного элемента, например,
–
0
индексы
1 2 3 4
A[1] A[2] A[3] A[4]
–
0
обращение к элементу
Рис. 3.7.
Как вы думаете, что делают эти операторы:
A[2] ) 5
–
0
–
0
–
0
= A[1] + 2*A[2]
Индексом может быть также значение целой переменной или арифметического выражения, результат которого – целое число. Например, для массива на Рис. 3.7 программа
i = 1
print( A[i], A[i+1], A[3*i+1], A[i-1] )
выведет то же самое, что и программа
print( A[1], A[2], A[4], A[0] )
Определите, что выведет этот фрагмент программы для массива на Рис. 3.7:
i = 1
A[2] = A[i] + 2*A[i-1] + A[3*i] print( A[2] + A[4] )
Найдите ошибки в этом фрагменте программы:
A = [1, 2, 3, 4, 5] x = 1
print( A[x-3] )
A[x+4] = A[x-1] + A[2*x]
В чём заключаются ошибки?
Выход за границы массива – это обращение к элементу с ин-
76 http://kpolyakov.spb.ru
05.04.2019 Информатика, 8 класс К.Ю. Поляков, Е.А. Еремин
дексом, который не существует в массиве.
При выходе за границы массива программа обычно завер-шается аварийно.
Индексом может быть даже значение элемента массива. Например, запись A[A[2*i]] означает, что нужно взять значение A[2*i] при текущем значении переменной i и использовать его как индекс нужного элемента. Для массива
0 1 2 3 4
при i = 1 получаем
i = 1 2*i = 2 A[2*i] = A[2] = 0 A[A[2*i]] = A[0] = 4.
Определите, что выведет этот фрагмент программы для последнего рассмотренного массива:
Достарыңызбен бөлісу: |