Друзья, приветствую вас на 4ом уроке Python. На самом первом занятии мы разбирались с тем, что такое переменные в Python. Они прекрасно подходят для хранения каких-либо одиночных значений. Например, строка или число. Но что делать, если нам нужно обработать целый ряд похожих переменных? В других языках программирования это называется «массивами», а у нас это будут списки. Итак, тема сегодняшнего занятия — списки в Python.
Списки в Python — это не массивы
Это гораздо лучше. И сейчас я расскажу вам, почему. Обратимся к терминологии. Строго говоря, массив — это определённое количество элементов одного типа. В массивах совсем другой способ хранения данных: там нет индексации и заранее определённого размера. Другое дело — списки в Python! Это, можно сказать, динамический массив. Размеры для списков задавать не нужно. Их можно расширять. Столько, сколько захотите. Можно добавить элементы разных типов (а можно и вложенные списки), и каждый из них будет иметь свой порядковый номер. Ну разве не прелесть?
Простой список состоит из двух квадратных скобок и значений, которые перечислены через запятую. Список может быть числовым, строковым, смешанным. Каждому элементу присваивается свой индекс. Это значит, что по номеру из списка можно всегда «вытащить» необходимое значение. Важно лишь помнить, что такой индекс начинается не с «1», как мы все привыкли, а с «0». Взгляните, ниже я привёл примеры того, как могут выглядеть списки в Python.
1 2 3 |
list = [54, 'что-то', [1,2,3,4], 5, 10, 'ещё что-то'] a = [67, 2, 34, 10] b = ['Мария', 'Пётр', 'Александр', 'Тимофей'] |
Работа со списками в Python
Срезы в списках
Списки в Python можно изменять, дополнять, сортировать и «выдёргивать» из них необходимые значения. Начнём с простого. Давайте зададим список и попросим программу «выдернуть» несколько определённых значений. В работе с языком Python это называется «срез». Далее, чтобы быть более предметным, я буду приводить пример на списке… продуктов. Итак, есть определённый список продуктов, и нам захотелось «вспомнить», что там было на втором месте.
1 2 |
list = ['молоко', 'хлеб', 'яйца', 'мука', 'помидоры', 'картофель', 'туалетная бумага'] print (list[1]) |
Так программа выведет на экран вторую позицию из списка, а именно — «хлеб». Попробуйте самостоятельно изменить индекс элемента списка и посмотреть, что программа выведет на экран. Но это далеко не все срезы, которые можно сделать со списками Python. Возможностей гораздо больше. Например, можно:
- «выдернуть» диапазон значений (например, с третьего по шестой элемент);
- получить срез с определённого значения и до конца списка;
- получить каждый второй (третий, четвёртый и т.д.) элемент из списка;
- или вовсе изменить порядок списка на обратный.
1 2 3 4 5 |
list = ['молоко', 'хлеб', 'яйца', 'мука', 'помидоры', 'картофель', 'туалетная бумага'] print (list[1:4]) # на экране появятся элементы "хлеб, яйца, мука" print (list[2:]) # на экране будут все элементы списка, начиная с "яйца" print (list[::2]) # на экране будет отображаться каждый второй элемент ("хлеб, мука, картофель) print (list[::-1]) # порядок элементов изменится на обратный |
Впрочем списки, напомню, могут быть сколь угодно длинные. А значит, не всегда будет удобно считать, каким номером идёт последний или предпоследний элемент списка. Списки в Python учитывают эти сложности. Чтобы запросить последний элемент, нужно вставить индекс «-1», предпоследний — «-2» и так далее. Попробуем вывести на экран предпоследний элемент:
1 2 |
list = ['молоко', 'хлеб', 'яйца', 'мука', 'помидоры', 'картофель', 'туалетная бумага'] print (list[-2]) |
Списки в Python: добавление, удаление, расширение
Чтобы добавить новый элемент в конец списка, следует воспользоваться функцией append.
1 2 3 |
list = ['молоко', 'хлеб', 'яйца', 'мука', 'помидоры', 'картофель', 'туалетная бумага'] list.append('кофе') print (list[-1]) |
Разумеется, не всегда удобно, что новый элемент «приклеивается» к концу списка. А что, если мне нужно поставить его на определённое место? Не вопрос. Используем функцию insert, указывая индекс (адрес, куда нужно вставить элемент) нового элемента. Попробуем?
1 2 3 |
list = ['молоко', 'хлеб', 'яйца', 'мука', 'помидоры', 'картофель', 'туалетная бумага'] list.insert(2,'кофе') print (list) |
Нужно удалить элемент из списка? Да пожалуйста. Нам потребуется функция pop. Точно так же нужно указать индекс (адрес, откуда нужно удалить элемент). К слову, если функции ничего не задать в скобках, она удалит последний элемент списка. Давайте пробовать на практике!
1 2 3 4 |
list = ['молоко', 'хлеб', 'яйца', 'мука', 'помидоры', 'картофель', 'туалетная бумага'] list.pop(-3) list.pop() print (list) |
А если потребуется удалить элемент списка, зная его значение, но не зная индекса, воспользуйтесь функцией remove. Если в списке есть несколько идентичных значений, то удалено будет первое попавшееся.
А давайте попробуем «склеить» два списка? Будем использовать функцию extend. Создадим ещё один список, например, список дел. А потом…
1 2 3 4 |
list = ['молоко', 'хлеб', 'яйца', 'мука', 'помидоры', 'картофель', 'туалетная бумага'] list2 = ['выкинуть мусор', 'прибраться в квартире'] list.extend(list2) print (list) |
В целом, то же можно сделать и при помощи простого сложения. Никто нам этого в языке Python не запрещает.
Что ещё можно сделать со списками в Python?
Что ещё умеют списки в Python? Мы можем их отсортировать по возрастанию или по алфавиту (в зависимости от того, какой тип списка у нас под рукой). Сделать это можно при помощи функции sort. Продемонстрирую на примере: если вы всё правильно сделали, то программа должна выдать «хлеб».
1 2 3 |
list = ['молоко', 'хлеб', 'яйца', 'мука', 'помидоры', 'картофель', 'туалетная бумага'] list.sort() print (list[-2]) |
Ранее я писал, что не всегда удобно считать количество элементов списка. Теперь же оговорюсь: неудобно это делать вручную. А в языке Python для этого есть встроенная функция len. Вот, как ей пользоваться:
1 2 |
list = ['молоко', 'хлеб', 'яйца', 'мука', 'помидоры', 'картофель', 'туалетная бумага'] print (len(list)) |
Списки в Python — достаточно мощный инструмент. Помимо всего описанного, можно скопировать все значения списка в другой список (метод copy), посчитать, сколько раз встречается то или иное значение (метод count), узнать индекс элемента (метод index — вернёт индекс первого попавшегося).
И ещё кое-что интересное
Часто бывает, что приходится работать именно со «словесными» списками, переводя список в строку (т.е. в одну переменную). Сделать это можно следующим образом, задав специальный разделитель (если этого не сделать, то слова будут склеены в одно).
1 2 3 |
list = ['молоко', 'хлеб', 'яйца', 'мука', 'помидоры', 'картофель', 'туалетная бумага'] my_str = ', '.join(list) print (my_str) |
Ну и, конечно, всегда можно очистить список от элементов, применив метод clear().
Домашнее задание
Создайте прототип программы «список покупок». Для этого дайте программе задание несколько раз спросить, что вы хотите добавить в список покупок. Затем отсортируйте значения по алфавиту и выведите значения одной строкой. Забегая вперёд, скажу — лучше всего это, конечно, сделать, зная циклы Python. Но это уже тема следующего урока. Удачи, встретимся!
Показать решение
1 2 3 4 5 6 7 8 9 10 11 |
shop_list = [] print ('Добрый день, вас приветствует список покупок.') a = input ('Что Вы хотите добавить в список покупок? ') shop_list.append(a) a = input ('Что Вы хотите добавить в список покупок? ') shop_list.append(a) a = input ('Что Вы хотите добавить в список покупок? ') shop_list.append(a) shop_list.sort() my_str = ', '.join(shop_list) print(my_str) |
Методы списков в Python, конечно, удивляют. Могу теперь крутить-вертеть списками, как захочу