Обработка табличных данных. Список
В программах, с которыми вы до сих пор имели дело, любая переменная хранила только одно значение. Такие переменные называют простыми.
Но на практике во многих случаях простыми переменными обойтись не удастся. Например, синоптик анализирует, как меняется среднесуточная температура, финансист — что происходит с курсом ценных бумаг, социолог — каковы результаты опроса общественного мнения. Во всех этих случаях исходные данные — уже не одиночные значения, а таблицы.
Месяц | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
t, °C | -21 | -18 | -7,5 | 5,6 | 10 | 18 | 22,2 | 24 | 17 | 5,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 натуральных чисел, а затем выводящий эти значения на экран.