Список в Python – это структура данных для хранения последовательности, состоящей из чисел, строк, отдельных символов. Такие последовательности могут быть как однородными (состоящими из данных одного типа), так и смешанными:
Значения, из которых состоит список, называются элементами списка. К элементам списка можно обращаться по индексам (нумерация, как и в случае со строками, всегда начинается с 0), отрицательная нумерация также поддерживается:
Как и при работе со строками, для операций со списками можно использовать срезы:
Списки аналогичны массивам в других языках программирования. Списки бывают одномерными и многомерными – на практике чаще всего встречаются двумерные (матрицы):
Индексация элементов в многомерных списках аналогична математической – за исключением того, что нумерация начинается с 0, а не с 1. Для обращения к нужному элементу необходимо указать номер столбца и строки:
Для сложных математических операций с многомерными массивами обычно используют специальную библиотеку NumPy.
Создание и ввод списков
Есть несколько способов создать список – данные можно ввести вручную, сгенерировать, преобразовать из какого-либо другого типа с помощью встроенных функций list() или split(). Рассмотрим все эти способы подробнее.
Первый способ: указание значений списка вручную
Список с данными создается простым перечислением нужных значений в квадратных скобках []
:
Для создания пустого списка достаточно объявить его название и указать на тип с помощью квадратных скобок или встроенной функции list():
Второй способ: преобразование других типов данных в список
Уже упомянутая функция list() позволяет преобразовать строку в список:
При этом list() можно комбинировать с другими функциями. Так можно разделить вводимую строку на отдельные символы:
Во многих случаях для преобразования строки в список достаточно split():
С помощью split() можно разбить строку по определенным разделителям – по умолчанию это пробел:
Разделитель, отличный от пробела, указывают в одинарных или двойных кавычках:
Использование strip() обеспечивает удаление ненужных пробелов в начале и конце строки, а map() применяет нужную функцию ко всем элементам списка. В приведенном ниже примере map() применяет int() к каждому символу строки, преобразовывая строковые символы в целые числа:
Третий способ: генерация списков
При необходимости список можно сгенерировать. Самый простой метод – использовать встроенную функцию range(), которая обеспечит автоматическое создание списка, включающего значения из определенного диапазона:
Другой метод генерации списка – использование list comprehension (списковое включение). В приведенном ниже примере список создается из четных чисел, входящих в определенный диапазон:
А здесь список составляется из чисел, возведенных в квадрат:
Поскольку списковые включения позволяют создавать списки по определенным правилам и условиям, их часто используют в качестве компактной замены циклов for и условий if, которые мы будем рассматривать позже:
Вывод и распаковка списка
При стандартном использовании print() элементы выводятся в кавычках (если это строковые данные) и в квадратных скобках. Избавиться от кавычек и скобок поможет оператор распаковки *
:
Для вывода в столбик пригодится разделитель /n
:
Основные методы списков
Список – очень удобная структура данных, а разнообразие методов работы со списками в Python позволяет легко и элегантно решить любую практическую задачу по хранению и обработке последовательностей. Перечислим самые полезные методы.
Максимальный и минимальный элемент списка – max() и min():
Функции max() и min() могут принимать дополнительные параметры, например, длину key=len
:
Сумма элементов списка – sum():
Сортировка по возрастанию и убыванию – sort() и sort с ключом reverse=True:
Перестановка элементов в обратном порядке – reverse():
Добавление элемента append() и расширение списка другим списком – extend():
Подсчет количества всех элементов списка len() и подсчет определенных элементов count():
Удаление элемента по индексу – del() и по значению – remove():
Удаление и возврат последнего элемента – pop():
Если указать индекс элемента, он будет удален вместо последнего:
Удаление всех элементов списка – clear():
Вставка элемента в определенную позицию – insert():
Индекс первого вхождения элемента index() в списке или в диапазоне:
Создание поверхностной копии списка – copy():
Объединение элементов списка в строку – join():
Этот метод мы уже рассматривали в предыдущей статье – он относится одновременно и к методам списков, и методам строк:
Параллельная обработка списков – zip():
Практика
Задание 1
Напишите программу, которая получает на вход строку, выбирает из нее все числа, и выводит:
- минимальное число;
- максимальное число;
- сумму всех чисел.
Пример ввода:
Вывод:
Решение:
Задание 2
Напишите программу, которая:
- получает на вход строку, состоящую из разделенных пробелами числовых символов;
- преобразует символы в целые числа;
- формирует из чисел список, не включая в него цифры, встречающиеся в исходной строке только 1 раз;
- выводит список без скобок.
Пример ввода:
Вывод:
Решение:
Задание 3
Напишите программу, которая:
- получает на вход строку чисел, разделенных запятыми;
- формирует из чисел два списка – с четными и нечетными числами;
- выводит списки без скобок на отдельных строках.
Примечание: «не равно» в Python обозначается с помощью !=
.
Пример ввода:
Вывод:
Решение:
Задание 4
Напишите программу, которая:
- получает на вход слово, в котором одна буква ошибочно повторяется более 2 раз подряд;
- выводит ошибочную букву, число повторов и исправленное слово (если число повторов 1, в противном случае – сообщение
Не могу исправить
.
Гарантируется, что ошибочная буква не встречается в других частях слова, то есть программа будет получать на вход слова типа «коллллектив», а не «комммунизм».
Пример ввода 1:
Вывод:
Пример ввода 2:
Вывод:
Примечание: в print() можно использовать условия if и else, например:
Решение:
Задание 5
Напишите программу, которая:
- получает на вход строку, содержащую (в любой позиции) символ
#
; - находит и удаляет
#
по индексу; - выводит исправленную строку и ее самое длинное слово.
Пример ввода:
Вывод:
Решение:
Задание 6
Напишите программу, которая:
- принимает на вход строку, состоящую из случайных слов;
- отбрасывает слова, в которых есть небуквенные символы;
- переставляет слова в порядке возрастания;
- выводит на экран слова в столбик, без кавычек.
Пример ввода:
Вывод:
Решение:
Задание 7
Напишите программу, которая получает на вход строку, и формирует из нее 2 списка:
- в первый список входят слова, начинающиеся с гласных букв;
- второй список состоит из слов, начинающихся с согласных.
Выведите результат в две строки без кавычек и скобок.
Пример ввода:
Вывод:
Решение:
Задание 8
Имеются два списка:
Напишите программу, которая объединяет эти списки и выводит на экран список такого вида:
Решение:
Задание 9
Напишите программу, которая получает на вход строку, содержащую имя ученика и его отметки по основным предметам, и выводит средний балл успеваемости.
Пример ввода:
Вывод:
Примечание: для вывода двух знаков после запятой в f-строках используется параметр :.2f
.
Решение:
Задание 10
Игрушечный робот передвигается в соответствии с командами, получаемыми в виде строки вида n35 s48 e88 w33 n12 s10
, где n – север, s – юг, w – запад, e – восток, а цифры – расстояние в сантиметрах. Напишите программу для определения x и y координат робота. Будем считать, что движение всегда начинается с 0, 0
.
Пример ввода:
Вывод:
Решение:
Подведем итоги
В этой статье мы изучили основные (и самые полезные) методы работы со списками и списковыми включениями. Списковые включения отлично заменяют циклы с условиями и делают код максимально лаконичным. В следующей статье расскажем про методы работы со словарями.
📖 Содержание самоучителя
- Особенности, сферы применения, установка, онлайн IDE
- Все, что нужно для изучения Python с нуля – книги, сайты, каналы и курсы
- Типы данных: преобразование и базовые операции
- Методы работы со строками
- Методы работы со списками и списковыми включениями
- Методы работы со словарями и генераторами словарей
- Методы работы с кортежами
- Методы работы со множествами
- Особенности цикла for
- Условный цикл while
- Функции с позиционными и именованными аргументами
- Анонимные функции
- Рекурсивные функции
- Функции высшего порядка, замыкания и декораторы
- Методы работы с файлами и файловой системой
- Регулярные выражения
- Основы скрапинга и парсинга
- Основы ООП: инкапсуляция и наследование
- Основы ООП – абстракция и полиморфизм
- Графический интерфейс на Tkinter
- Основы разработки игр на Pygame
- Основы работы с SQLite
- Основы веб-разработки на Flask
- Основы работы с NumPy
- Основы анализа данных с Pandas
Комментарии