Введение в Python #6: списки(массивы)

Введение в Python #6: списки(массивы)

Vladislav Z - создатель канала x[code] & fullstack dev Python |

Хей хо! Ну как осилили рекурсии? Немного сложно? Есть такое. Если остались вопросы, спрашивайте не стесняйтесь. А мы мы продолжаем изучать базовые возможности программирования и языка Python. Думаю вам уже становятся более менее доступны такие понятия как переменные, данные и операции над этими данными. В этом уроке мы коснемся таким удивительным данным как списки. Представьте что у вас в программе должно быть много имен, фамилий и в принципе данных которые вы получаете. Согласитесь создавать каждый переменные name1, surname1, name2, surname2 - это не самый удобный способ для работы с данными. Поэтому великие умы придумали такое понятие как массивы данных. Таким образом в одной переменной массива(списка) может хранится неограниченное количество других переменных и данных. В этом уроке вы научитесь использовать списки для хранения и обработки множества значений. Получать отдельные элементы этих данных. Так же добавлять, удалять данные, изменять существующие значения, проверять на наличие элементов в списке. А так вам станет понятны такие понятия как mutable & immutable структур данных. Ну что ж поехали...

Массив - набор фиксированного количества или же совокупность однотипных данных расположенных в памяти друг за другом, доступ к котором осуществляется по индексу.

Так как такого типа данных как массив(по крайней мере встроенных) в Python нету, а есть только списки, то дадим определение и спискам.

Список - это тип данных, представляющий собой упорядоченную последовательность определенных значений, которые могут повторяться. Количество элементов в списке может быть произвольным.

Не заметили разницу? Согласен с первого взгляда явных отличий нет. Но в массиве в других языках программирования, мы явно и наперед знаем что будет хранится в массиве, такие примитивные данные как int, float и тд. В то же время как в списке может хранится что угодно. Например в списке гостей list_name под индексом [0] может хранится список из name, surname, phone.

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

list_name = [["Fedor", "Ubunta", "0993332211"], ["Bill", "Win", "0931112233"], ["Alex", "Buuren", "0673332211"]]
print("Наш первый гость: " ,list_name[0])
print("Имя нашего первого гостя: ", list_name[0][0])
print("Номер телефона нашего первого гостя: ", list_name[0][2])
print("Наш второй гость: ", list_name[1])

Числа которые вы видите в квадратных скобках, это и есть индекс элемента. А индексы это целые числа, которые используются для доступа к элементу.
Так же когда производительности списков недостаточно, можно воспользоваться специальными средствами: классом array из стандартной библиотеки языка, в котором типы данных элементов списка фиксированы, или сторонними библиотеками (такими, как NumPy), которые предлагают эффективную реализацию классических массивов как в других языках.

Тип данных который реализует списки называется, list(). Списки являются изменяемой(mutable) структурой данных, как я уже говорил, это значит данные которые мы внесли в списки мы сможем изменять, то есть его элементы можно изменять после создания списка. А что может быть по другому? Да, и это вам будет известно когда окунемся в мир питоне немного глубже и узнаем о других типах данных.

Так же списки в пайтон являются гетерогенной структурой данных, это значит, что данные в одном списке могут быть абсолютно разных типов, ограничений в этом плане нет, что даёт нам огромные возможности при работе с данными.

Как создаются списки?

Чтобы создать список из элементов, следует записать его элементы через запятую в квадратных скобках, например:

int_list = [1, 2, 3, 5]
char_list = ['a', 'c', 'z', 'x']
empty_list = []

Имена списков естественно не имеют значения.

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

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

Можно так же получить группу элементов по их индексам используя срезы. Это очень удобно если вы например получили ссылку и вам нужно получить из нее только доменное имя:

url = "http://x-code.com/WdMttVtd0mWce1j65ZRpUl/Alteri?node-id=0%3A1"
correct_url = url[7:17]

На выходе мы получим 'x-code.com'. Согласитесь удобная штука? И это не все возможности списков. На практике мы столкнемся с более реальными задачами о которых я вам расскажу немного позже.

Срезы списков работают похожим образом как и range(start, end, step):

new_list = my_list[start:end:step]

Полезные методы и функции

Представим что у нас есть список имен, и мы хотим убедиться что в нашем списке есть указанное имя, для этого используем оператор in:

lst = ["Vladislav", "Alexandr", "Petr"]
#создадим условие при котором будет выводится имя если оно есть в списке
if "Petr" in lst:
print('Это имя есть в списке.')

Так как строки в своем роде тоже являются списками, а точнее последовательными данными, их мы так же можем проверять:

>>> s = "The indoor company"
>>> 'company' in s
True

Для получения количества элементов используется функция len():

#возьмем строку s из верхнего примера
print(len(s))

или

len(lst)

Как вы видите работает это и на строки и на списки.

Так же основными методами которые вы будете использовать в программировании на Python, добавления, удаление и изменения элемента в списке, рассмотрим их:

  • Для добавления нового элемента в список используется метод append:
my_list.append(value)

• Для удаления элемента списка по индексу используется оператор del:

del my_list[index]

• Для изменения элемента списка используется оператор присваивания:

my_list[index] = value

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

print(lst[0])
print(lst[1])
print(lst[2])

Мы можем использовать для обхода списка цикл for:

for element in lst:
print(element)

Вот так просто, да.

На самом деле глубина всех этих инструментов, вам откроется только на практике, когда вы столкнетесь с реальными задачами, которые вам уже придется выстраивать самим. Но не переживайте, многие фичи и возможности мы будем размещать в нашем блоге, чтобы каждый смог обучиться программированию на Python. Благодарю за внимание! Подписывайся сам и расскажи друзья, ведь курс курс не бесплатный, а цена его - твоя подписка:) и поделится хотя бы с 3-мя друзьями :)

Вопросики:

  • Что такое массив?
  • Что такое индекс?
  • Что такое список?
  • Являются ли классические массивы частью языка Python? Что используется вместо

них?

  • Как создать список в Python?
  • Какой индекс имеет первый элемент списка?
  • Какой индекс имеет последний элемент списка?
  • Что такое сечение списка?
  • Как узнать длину списка?
  • Как добавить новый элемент в список?
  • Как удалить элемент из списка?
  • Как обработать каждый элемент списка?

Задачки:

  1. Создайте список, введите количество его элементов и сами значения, выведите эти значения на экран в обратном порядке.
  2. Создайте список и введите его значения. Найдите наибольший и наименьший элемент списка, а также сумму и среднее арифметическое его значений
  3. Простым называется число, которое делится нацело только на единицу и само себя. Число 1 не считается простым. Напишите программу, которая находит все простые числа в заданном промежутке, выводит их на экран, а затем по требованию пользователя выводит их сумму либо произведение.

Что-то не понятно? Ментор по программированию на Python|Django|Flask| web-разработке: https://t.me/xdev_monad




Report Page