Списки в Питоне.

1. Списки.

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

     A=[1,2,3,4,5]
     B=["У лукоморья","дуб зеленый"]
     C=["one",1,1.0,"1"]

В этом примере переменная A — это список из 5 элементов, являющихся целыми числами, B — это список из двух элементов, являющихся строками, а C — это список из 4 элементов: строки "one", целого числа 1, действительного числа 1.0 и строки "1" (и все это — различные объекты).

Во многом списки похожи на множества в математике, их главное отличие в том, что списки могут содержать повторяющиеся элементы и элементы списка упорядочены. Можно задать и пустой список, не содержащий элементов: A=[].

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

Воспользуемся списком для решения задачи нахождения суммы большого количества чисел:

     A=input("Введите список чисел: ")
     S=0
     for f in A:
         S=S+f
     print "Сумма элементов списка", A, "равна", S

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

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

Во многих языках программирования структуры данных, наиболее близкие спискам в Питоне, называются массивами.

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

Выше рассказывалось, что список можно задать перечислив его элементы в квадратных скобках через запятую, либо при помощи функции 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 (значение индекса списка выходит за допустимый диапазон). Такая ошибка является весьма типичной.