Списки в Питоне.
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
(значение индекса списка выходит за допустимый диапазон). Такая ошибка является весьма типичной.