Списки

Основы программирования >>

Обработка табличных данных. Список

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

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

Месяц123456789101112
t, °C-21-18-7,55,6101822,224175,4-7-18

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

Как любую переменную, список до его использования необходимо создать. В простейшем случае для этого в квадратных скобках через запятую перечисляют все его элементы, например:

lst1 = [-3, 10, 2, 44, -12, 8] # список из 6 целых элементов
lst2 = ['апельсин'] # список из одного строкового элемента
lst3 = [] # пустой (т. е. не содержащий ни одного элемента)

Для формирования списка, содержащего заданное число элементов с одним и тем же значением можно использовать оператор следующего вида:

список = [значение for переменная in range(количество)]

Например, создадим список из 50 элементов со значением 0:

lst5 = [0 for k in range(50)]

Чтобы создать аналог двумерного массива используют список, элементы которого, в свою очередь, тоже являются списками:

lst2d = [[1, 3, 2], [5, 2, 0], [6, 7, 3]]

При обращении к элементу списка индекс указывается в квадратных скобках после имени списка. Например, lst1[3] — элемент списка lst1 с индексом 3.

В Python можно использовать и отрицательные значения индекса. В этом случае отсчет ведется с конца списка. Например, lst1[-1] — это последний элемент списка lst1.

Важно, что индекс может быть не только числом, но и переменной, и даже целым математическим выражением. Именно это (совместно с использованием циклов) позволяет легко и удобно обрабатывать списки, состоящие из десятков и сотен элементов.

Пример программы с использованием списка

# расчет средней температуры
temp = []
# вводим список
for i in range(30):
    t = int(input('Температура '+ str(i + 1) + ': '))
    temp.append(t)
# находим сумму элементов списка
average = 0
for i in range(30):
    average = average + temp[i]
# вычисляем и выводим среднее арифметическое
average = average / 30
print('Среднегодовая температура: ', average, '°C', sep='')

Некоторые функции и методы для работы со списками*

Функция/методНазначениеПример записи
len(список)длина списка (количество элементов)a = len(lst1)
del список[инд]удалить элементdel lst1[2]
del список[инд1: инд2]удалить элементы с индексами от инд1
до инд2 (не включая инд2!)
del lst1[1:3]
список.append(элем)добавить элемент в конец спискаlst1.append(‘red’)
список.insert(инд,элем)добавить элемент перед элементом
с индексом
lst1.insert(2,5.6)
список.index(элем)индекс первого вхождения элемента
в список
i = lst1.index(2)
список.sort()отсортировать по возрастаниюlst1.sort()
список.reverse()изменить порядок на обратныйlst1.reverse()

*) В таблицу внесен также оператор del, служащий в Python для удаления объектов, в том числе используемый и для удаления элементов списка или среза списка.

Основы программирования >>

Задания

1. Сформируйте список z состоящий из 100 целых элементов, равных 0.

2. Определите, какие значения получат элементы списка a при выполнении следующего фрагмента программы:

# задание 2.а
a[0] = 1
for m in range(1,8) :
    a[m] = m - 3 * a[m-1]
# задание 2.б
for k in range(10) :
    a[k] = k + 5

3. Список x состоит из 10 элементов, имеющих нулевые значения. Какие значения будут у элементов списка после выполнения следующего фрагмента программы:

# задание 3.а
for n in range(1, 4) :
    x[9-3*n] = 3 * n
# задание 3.б
i = 1
while x[i] <= 100 :
    x[i+1] = 2 * x[i] + i
    i = i + 1

4. Составьте фрагмент программы, заполняющей список квадратами первых 15 натуральных чисел, а затем выводящий эти значения на экран.

Основы программирования >>