Python. Списки
Список - это последовательность элементов - объектов произвольного типа. Элементы списка пронумерованы с нуля, то есть индекс первого элемента - 0.
В отличии от массивов в доугих языках программирования, элементы в списке могут быть разного типа, т.е. список может содержать одновременно числа, строки, другие списки и т.д.
Список можно объявить пустым и затем добавлять элементы методом append:
list = []
for i in range(10):
list.append(0);
Также список можно задать перечислением элементов:
list = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
В Python есть инструмент, отличающий его от других языков, - генератор списков. Например, тот же список, состоящий из 10 нулей можно создать с его помощью инструкцией в одной строке:
list = [0 for i in range(10)]
Или еще проще:
list = [0] * 10
Доступ к каждому элементу списка осуществляется как и в строках по его индексу: list[0] - первый элемент списка.
Также как у строк, у списков можно получать срезы: list[a:b:c] - список элементов с индексами от a до b - 1 с шагом c.
Размер списка можно получить при помощи функции len.
Некоторые методы списков приведены в таблице:
Метод | Описание |
list.append(x) | Добавляет элемент x в конец списка |
list.insert(i, x) | вставляет элемент x с индексом i |
list.pop([i]) | Возвращает элемент с индексом i и удаляет его из списка. Если индекс не указан, то удаляет последний элемент. |
list.sort([key=функция]) | Сортирует список на основе функции. Если функция не задана, то сортирует по возрастанию. |
list.reverse() | Разворачивает список, т.е. меняются местами первый и последний элементы, второй и предпоследний и т.д. |
Например, пользователь вводит десять целых чисел в список. Отсортировать по возрастанию и вывести полученный список:
a = []
for i in range(10):
a.append(int(input('Введите элемент ' + str(i) + ': ')))
a.sort()
print(a)
Пользователь вводит слова, разделенные пробелом. Каждое слово разместить в элементе списка, вывеcти полученный список и количество слов в нем:
a = input('Введите текст: ').split()
print(a)
print('Количество слов: ', len(a))
Часто данные необходимо представлять в виде таблиц или матриц. Такие данные можно размещать в списке, каждый элемент которого представляет из себя строку таблицы - список элементов, каждый из которых относится к столбцу таблицы. Например, таблицу из двух строк и пяти столбцов можно представить:
a = [ [0, 1, 2, 3, 4], [5, 6, 7, 8, 9] ]
Доступ к каждой ячейке таблицы осуществляется по двум индексам: строки и столбца. Например, a[0][4] - ячейка первой строки и пятого столбца.
Выведем эту таблицу:
a = [ [0, 1, 2, 3, 4], [5, 6, 7, 8, 9] ]
for i in range(2):
for j in range(5):
print(a[i][j], end = ' ')
print()
Ввести таблицу, состоящей из трех строк, введенных пользователем (целые числа, разделенные пробелом) можно следующим образом:
a = []
for i in range(3):
row = input().split()
for j in range(len(row)):
row[j] = int(row[j])
a.append(row)
print(a)
В следующем примере применяется генератор списка из строки:
a = []
for i in range(3):
a.append([int(j) for j in input().split()])
В нижеследующих задачах, если иное не указано, подразумевается список из 10 целых числел.
Задачи для самостоятельного решения
-
Пользователь вводит целые числа - элементы списка. Подсчитать разницу между суммой всех элементов с четными индексами и суммой всех элементов с нечетными индексами.
-
Проверить, является ли введенный список симметричным (первый элемент равен последнему, второй - предпоследнему и т.д.).
-
Выяснить, все ли элементы введенного пользователем списка, различны. Примечание: Алгоритм сравнения должен быть рациональным, т.е. повторно сравнивать элементы недопустимо.
-
Подсчитать среднее арифметическое всех положительных элементов списка, введенного пользователем.
-
Определить индексы первого и последнего элементов, которые совпадают с максимальным элементом списка.
-
Определить количество элементов массива, которые больше суммы предшествующего и последующего элементов.
Примечание: первый и последний элементы сравниваются только с одним "соседом" -
В массиве из 12 элементов хранится количество осадков в каждом месяце. Вывести таблицу из 3 столбцов, где для каждого месяца вывести его номер, количество осадков в нем и отклонение количества осадков в этом месяце от среднегодового. Значения количества осадков по месяцам:
(39.0, 35.1, 42.6, 45.5, 79.9, 71.1, 84.3, 44.7, 54.5, 44.8, 40.2, 45.8)
Примечание: Для вывода таблицы использовать форматированный вывод. -
Найти индексы первого вхождения максимального элемента таблицы. Вывести два числа: номер строки и номер столбца, в которых стоит наибольший элемент в таблице. Если таких элементов несколько, то выводится тот, у которого меньше номер строки, а если номера строк равны то тот, у которого меньше номер столбца.
Программа получает на вход размеры массива N и M, затем N строк по M чисел в каждой. -
Дана таблица, которую нужно вывести:
a = [ [5, 6, 3, 8, 2], [3, 5, 9, 2, 8], [8, 3, 7, 5, 1] ]
Пользователь вводит два числа N, M < 5. Поменять в таблице столбцы N и M местами и вывести результат. -
Пользователь вводит натуральное число N < 20. Создать таблицу, в которой на главной диагонали записаны нули, на двух прилегающих диагоналях с двух сторон к главной записаны 1, на следующих - 2 и т.д. Вывести таблицу.
-
Произвести циклический сдвиг списка на одну позицию влево (т.е. второй элемент переставить на первое место, третий элемент - на второе и т.д., а первый элемент - на последнее).
-
Произвести циклический сдвиг списка на одну позицию вправо (т.е. предпоследний элемент переставить на последнее место и т.д., а последний элемент - на первое).