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

Список — структура данных, предназначенная для хранения упорядоченных наборов элементов. Слово «упорядоченные» в этом случае означает, что элементы структуры хранятся в том порядке, в котором они были добавлены.

Элементы списка индексированы, то есть имеют порядковый номер. Нумерация всегда начинается с нуля и всегда монотонна. Это значит, что у каждого последующего элемента индекс возрастает на единицу — такую нумерацию еще называют сквозной. При удалении элементов из начала или середины списка, а также при вставке элементов в середину, индексы пересчитываются и указанные выше свойства нумерации сохраняются.

Список в 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.

Есть несколько способов создать список – данные можно ввести вручную, сгенерировать, преобразовать из какого-либо другого типа с помощью встроенных функций 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]  

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

При необходимости список можно сгенерировать. Самый простой метод – использовать встроенную функцию 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',

Вернуться:

Извините, но на данный момент нам нечего вам показать. Попробуйте использовать другой фильтр или зайти попозже.