Во всех реальных программах приходится иметь дело не с отдельными переменными, а с наборами данных. Например, база данных учащихся школы — это набор данных, содержащих их фамилии, имена, классы; файл, редактируемый в текстовом редакторе хранится в виде набора строк и т.д. Для хранения большого числа данных (как правило, однородных) используются структуры, которые во многих языках программирования называются массивами. Массивы в Питоне называются списками, потому что они поддерживают ряд дополнительных операций, не присущих стандартным массивам.
В предыдущем листке рассказывалось, что список можно задать перечислив его элементы
в квадратных скобках через запятую, либо при помощи функции input
, если
пользователь введет список в таком же виде, либо можно создать список при помощи функции
range
. Например, если необходимо, чтобы переменная A
была списком из n
элементов, это можно сделать при помощи присваивания A=range(n)
.
Распечатать элементы массива можно при помощи инструкции print
.
Внимание! Если при вводе списка не заключить его в квадратные скобки, а просто перечислить его элементы через запятую, то будет создан объект, называемый кортежем. Его главное отличие от списков заключается в том, что элементы кортежа нельзя изменять. При попытке присвоить элементу кортежа новое значение будет выдана ошибка "TypeError: object doesn't support item assignment" (Ошибка типа: объект не поддерживает возможность изменения элемента). В случае возникновения таких ошибок будет говориться "смотри листочек".
Обратиться (узнать значение или изменить) элемент с номером i списка
A
можно используя оператор []
: A[i]
. Элементы
списка нумеруются, начиная с 0, то есть если в списке есть n элементов,
то начальный элемент списка имеет номер 0, а конечный номер n-1.
Как правило, номера элементов списка называются индексами
(произносится "элемент с индексом 0").
Узнать количество элементов в списке A
можно при помощи функции len(A)
.
Таким образом, распечатать список поэлементно можно при помощи следующей программы:
A=input("Введите список: ") for i in range(0,len(A)): print "Элемент с номером", i, "равен", A[i]
В данном примере если список A
состоит из n элементов, то
переменная i
принимает значения от 0 до n-1, то есть
всевозможные значения индексов списка. В следующем примере используется
аналогичный цикл для того, чтобы удвоить все элементы списка:
A=input("Введите список: ") for i in range(0,len(A)): A[i]=2*A[i]
Также можно использовать отрицательные значения индекса для нумерации элементов с конца списка:
A[-1]
обозначает последний элемент списка A
,
A[-2]
— второй с конца и т.д. до первого элемента A[-len(A)]
.
При попытке обратиться к списку из n элементов по индексу, большему, чем
n-1 или меньшему, чем -n, будет выдана ошибка IndexError: list index out of range
(значение индекса списка выходит за допустимый диапазон). Такая ошибка является весьма типичной.
Во всех упражнениях предполагается, что список вводится пользователем, как в рассматриваемых примерах. Нельзя использовать дополнительные списки.
Во многих упражнениях также следует предполагать, что список состоит из чисел.
[1,2,3,4,1,2,3,4]
программа
должна выводить 3
.
A
и число x. Вычислите значение многочлена,
коэффициенты которого записаны в списке A
в точке x, то есть
A[0]
+A[1]
x +A[2]
x2 +...+A[n-1]
xn-1 .
Количество действий не должно превосходить Cn (то есть должно быть пропорционально
степени многочлена). Поскольку оператор возведения в степень **
выполняется более,
чем за одну операцию, то использовать его в программе нельзя.