Наталья Кайда 17 ноября 2022

🐍 Самоучитель по Python для начинающих. Часть 5. Методы работы со списками и списковыми включениями

Рассмотрим методы, которые чаще всего используются для обработки списков, и покажем, как легко можно решать разнообразные задачи с помощью списковых включений.
🐍 Самоучитель по Python для начинающих. Часть 5. Методы работы со списками и списковыми включениями

Список в Python – это структура данных для хранения последовательности, состоящей из чисел, строк, отдельных символов. Такие последовательности могут быть как однородными (состоящими из данных одного типа), так и смешанными:

        my_list1 = [1, 2, 3, 4, 5]
my_list2 = ['P', 'y', 't', 'h', 'o', 'n']
my_list3 = ['адрес', 'телефон', 'имя']
my_list4 = ['Евгений', 23, 'разработчик', 1.77]

    

Значения, из которых состоит список, называются элементами списка. К элементам списка можно обращаться по индексам (нумерация, как и в случае со строками, всегда начинается с 0), отрицательная нумерация также поддерживается:

        >>> my_lst = ['P', 'y', 't', 'h', 'o', 'n']
>>> print(my_lst[2])
t
>>> print(my_lst[-3])
h

    

Как и при работе со строками, для операций со списками можно использовать срезы:

        >>> lst = [1, 3, 2, 4, 5]
>>> print(lst[::-1])
[5, 4, 2, 3, 1]
>>> print(lst[1:4])
[3, 2, 4]

    

Списки аналогичны массивам в других языках программирования. Списки бывают одномерными и многомерными – на практике чаще всего встречаются двумерные (матрицы):

        matrix = [[2, 4, 6, 8, 10], [3, 6, 9, 12, 15], [4, 8, 12, 16, 20]]
matrix2 = [[12, 14, 16, 18, 10],
           [13, 16, 19, 12, 15],
           [14, 18, 12, 16, 20]]
    

Индексация элементов в многомерных списках аналогична математической – за исключением того, что нумерация начинается с 0, а не с 1. Для обращения к нужному элементу необходимо указать номер столбца и строки:

        >>> lst = [[1, 3, 2], [4, 5, 6], [7, 8, 9], [2, 1, 8], [7, 3, 4]]
>>> print(lst[2][2])
9

    

Для сложных математических операций с многомерными массивами обычно используют специальную библиотеку NumPy.

🐍 Библиотека питониста
Больше полезных материалов вы найдете на нашем телеграм-канале «Библиотека питониста»
🐍🎓 Библиотека собеса по Python
Подтянуть свои знания по Python вы можете на нашем телеграм-канале «Библиотека собеса по Python»
🐍🧩 Библиотека задач по Python
Интересные задачи по Python для практики можно найти на нашем телеграм-канале «Библиотека задач по Python»

Создание и ввод списков

Есть несколько способов создать список – данные можно ввести вручную, сгенерировать, преобразовать из какого-либо другого типа с помощью встроенных функций list() или split(). Рассмотрим все эти способы подробнее.

Первый способ: указание значений списка вручную

Список с данными создается простым перечислением нужных значений в квадратных скобках []:

        num_list = [5, 15, 25, 0, 6]
symb_list = ['a', 'b', 'c', 'd']

    

Для создания пустого списка достаточно объявить его название и указать на тип с помощью квадратных скобок или встроенной функции list():

        spisok = []
my_lst = list()

    

Второй способ: преобразование других типов данных в список

Уже упомянутая функция list() позволяет преобразовать строку в список:

        >>> my_lst = list('Python')
>>> print(my_lst)
['P', 'y', 't', 'h', 'o', 'n']

    

При этом list() можно комбинировать с другими функциями. Так можно разделить вводимую строку на отдельные символы:

        >>> sp = list(input())
Я изучаю Python
>>> print(sp)
['Я', ' ', 'и', 'з', 'у', 'ч', 'а', 'ю', ' ', 'P', 'y', 't', 'h', 'o', 'n']

    

Во многих случаях для преобразования строки в список достаточно split():

        >>> sp = 'Разработка ПО на языке Python'.split()
>>> print(sp)
['Разработка', 'ПО', 'на', 'языке', 'Python']

    

С помощью split() можно разбить строку по определенным разделителям – по умолчанию это пробел:

        >>> sp = input().split()
Я изучаю методы списков
>>> print(sp)
['Я', 'изучаю', 'методы', 'списков']

    

Разделитель, отличный от пробела, указывают в одинарных или двойных кавычках:

        >>> lst = input().split(';')
номер;модель;цена;количество
>>> print(lst)
['номер', 'модель', 'цена', 'количество']

    

Использование strip() обеспечивает удаление ненужных пробелов в начале и конце строки, а map() применяет нужную функцию ко всем элементам списка. В приведенном ниже примере map() применяет int() к каждому символу строки, преобразовывая строковые символы в целые числа:

        >>> my_lst = list(map(int, input().strip().split()))
   3 4 5 2 3 4 5 6 1 2 8	
>>> print(my_lst)
[3, 4, 5, 2, 3, 4, 5, 6, 1, 2, 8]

    
Python без стресса: учитесь в своём темпе с поддержкой экспертов
Онлайн-курс «Основы программирования на Python» от Proglib academy предлагает 32 практических урока с персональной обратной связью от экспертов, где вы создадите 4 реальных проекта для портфолио и получите все необходимые навыки для старта карьеры в IT.

Третий способ: генерация списков

При необходимости список можно сгенерировать. Самый простой метод – использовать встроенную функцию range(), которая обеспечит автоматическое создание списка, включающего значения из определенного диапазона:

        >>> my_lst = list(range(5))
>>> print(my_lst)
[0, 1, 2, 3, 4]
>>> my_lst = list(range(1, 25, 2))
>>> print(my_lst)
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23]

    

Другой метод генерации списка – использование list comprehension (списковое включение). В приведенном ниже примере список создается из четных чисел, входящих в определенный диапазон:

        >>> my_lst = [i for i in range(1, 51) if i % 2 == 0]
>>> print(my_lst)
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50]

    

А здесь список составляется из чисел, возведенных в квадрат:

        >>> sqr = [i ** 2 for i in range(20)]
>>> print(sqr)
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361]

    

Поскольку списковые включения позволяют создавать списки по определенным правилам и условиям, их часто используют в качестве компактной замены циклов for и условий if, которые мы будем рассматривать позже:

        >>> my_str = '6emds83mmsad99342n42ld9xm37vn4820'
>>> my_lst2 = [i for i in my_str if i.isnumeric()]
>>> print(my_lst2)
['6', '8', '3', '9', '9', '3', '4', '2', '4', '2', '9', '3', '7', '4', '8', '2', '0']

    

Вывод и распаковка списка

При стандартном использовании print() элементы выводятся в кавычках (если это строковые данные) и в квадратных скобках. Избавиться от кавычек и скобок поможет оператор распаковки *:

        >>> lst = [1, 2, 3, 4, 5]
>>> lst2 = ['a', 'b', 'c', 'd', 'e']
>>> print(*lst)
1 2 3 4 5
>>> print(*lst2)
a b c d e

    

Для вывода в столбик пригодится разделитель /n:

        >>> my_lst = list('JavaScript')
>>> print(*my_lst, sep='\n')
J
a
v
a
S
c
r
i
p
t

    
***

Отлично! Вы освоили создание списков, включая мощные списковые включения.

Вы знаете, как создавать списки всеми возможными способами, получать доступ к их элементам и красиво выводить их на экран.

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

  • Полный набор инструментов для управления списками: от добавления (.append, .extend) и удаления (.remove, .pop) до сортировки (.sort) и поиска (.index).
  • 10 практических задач по обработке и анализу данных, где вы отточите применение этих методов до автоматизма.

Комментарии

ВАКАНСИИ

Добавить вакансию
AppSec BP
по итогам собеседования

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ