Рубрики
Без рубрики

Структуры данных в Python: списки и Мстители

Часть первая в моей серии о структурах данных. Tagged с помощью Python, структур данных, типов данных.

Также показан в моем личном блоге здесь

Введение

Хорошо, я видел «Бесконечную войну», и это было потрясающе. Это было шокирующе, смешно и заставило меня плакать. Расслабьтесь, есть некоторые спойлеры, но есть предупреждение. Я собираюсь украсть некоторые из Мстителей за примеры структур данных Python. Я не слишком знаком со всеми структурами данных, которые есть у Python. В качестве задачи я разработал план по глубокому погружению и изучить структуры данных в Python. Первым в этой серии будут списки Python.

Структуры данных – это методы, в которых данные хранятся и обрабатываются. Поскольку Python является языком более высокого уровня, чем, скажем, C, мы не подлежат управлению памятью и сбором мусора. Хотя, погружение в создание чего -то вроде списка назначает адреса памяти через процесс индексации. Мы поговорим больше об этом, хотя.

Примитив против не примитивных структур данных

Давайте рассмотрим, как Python классифицирует свои данные. Примитивные структуры данных – это структуры, которые обрабатываются на языке программирования. Это INT, поплавки, струны в Python. Они также называются типами данных. Не примитивные типы данных в Python относятся к нашим структурам данных. Списки, кортежи, наборы и словари. Это структуры, которые создает программист. Таким образом, когда мы индексируем каждый из них и назначаем местоположения памяти в записи в списке. Местоположения памяти вряд ли это что -то, что Python обнажает. На самом деле это не то, о чем вам нужно подумать с языком более высокого уровня. Однако, на мой взгляд, знание основной механики языка программирования, на мой взгляд, важно.

Список введения

Списки – это то, как мы можем хранить значения в списке, упоминаемые через индексацию каждого из значений. Ниже приведен пример списка:

list = [1,2,3]

print (list)

Теперь мы запускаем наш список

[1, 2, 3]

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

avengers = ['Iron Man','Captain America','Black Widow','The Hulk','Hawkeye','Thor', 'Falcon']

print ("Hero List example: ")
print (avengers)

Затем мы запускаем код и получаем:

Hero List example:
['Iron Man', 'Captain America', 'Black Widow', 'The Hulk', 'Hawkeye', 'Thor', 'Falcon']

Как видно выше, мы можем распечатать наш список как один список. Мы также можем использовать цикл для итерации через список один за другим. Как правило, если мы делаем что -то с этим списком (печать на экране, добавляя в базу данных), мы бы использовали для цикла для Itater через список

print ("For Loop Example: ")
for x in avengers:
    print (x)

Затем мы запускаем код:

For Loop Example:
Iron Man
Captain America
Black Widow
The Hulk
Hawkeye
Thor
Falcon

Упаковка

Мы можем использовать списки разными способами. Есть способы, которыми мы действительно можем «сложить» наши списки. Следуя последним методам первого выхода, мы можем использовать добавление и функции POP для нашего списка, чтобы добавить людей и забрать их. Те, кто видел Капитан Америку: Гражданская война, увидели дополнение еще двух героев в состав.

avengers.append('Black Panther')

print ("Append Example: ")
for x in avengers:
    print (x)

Что дает нам

Append Example:
Iron Man
Captain America
Black Widow
The Hulk
Hawkeye
Thor
Falcon
Black Panther

Теперь мы все знаем, кто такая черная пантера. У него есть страна для бега. У него нет времени, чтобы сидеть вокруг комплекса Мстителей и ждать, пока случится что -то ужасное. Как только присоединяется Т’Чалла, он должен отступить назад, чтобы заполнить роль короля Ваканды после смерти его отца.

avengers.pop()

print ("Pop Example: ")
for x in avengers:
    print (x)

Что дает нам:

Pop Example:
Iron Man
Captain America
Black Widow
The Hulk
Hawkeye
Thor
Falcon

Укладка работает так. Метод добавления добавит запись в конце списка. Метод POP с удалением записи из списка. Разница с помощью метода POP заключается в том, что вы можете указать индекс (положение) значения, которое вы хотите удалить, и он удалит его. Если оставить пусть, функция POP удалит последнюю запись в списке.

Индексация

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

print (avengers.index('Black Widow'))

Поместите эту команду в интерпретатор Python и получите 2 или третью позицию в списке.

2

Лучшее управление стоимостью

Так что первым начал понимать, что они не только в Мстителях, был Капитан Америка. Итак, допустим, мы не знаем, как работает функция POP, и мы не имеем никакого представления, где в нашем списке капитан. Мы можем использовать функцию удаления, чтобы удалить ее.

avengers.remove('Captain America')

print ("Remove Example: ")
for x in avengers:
    print (x)

Функция находит и удаляет данную запись. Если значение не существует, мы получаем возврату ошибки.

Remove Example:
Iron Man
Black Widow
The Hulk
Hawkeye
Thor
Falcon
Black Panther

С крышкой и Железным Человеком на аутах мы вставили черную пантеру в линейку. Тем не менее, Iron Man также нуждался в другой руке, чтобы вернуть капитана Роджерса и его когорты обратно в складку. Приходит лучшая версия фильма «Человек-паук». Давайте добавим его в список. Скажем, мы хотели сделать Человека-паука новым лицом Мстителей, поэтому мы хотим, чтобы он поставил его в качестве первого значения в списке. Мы можем сделать это, используя функцию вставки. Здесь мы передаем в индексной позиции, мы хотим, чтобы значение появилось, и значение.

avengers.insert(0, 'Spider Man')

print ("Insert Example: ")
for x in avengers:
    print (x)

Если мы распечатаем наш список еще раз, мы увидим, что Человек-паук появляется на самом верху. С чем я крут. Том Холланд делает отличного Человека-паука/Питера Паркера.

Insert Example:
Spider Man
Iron Man
Captain America
Black Widow
The Hulk
Hawkeye
Thor
Falcon
Black Panther

Сколько пауков?

Таким образом, вселенная комиксов имеет дюжину различных вариантов паука. Есть Питер Паркер-Человек-Человек, мой любимый Майлз Моралес в роли Человека-паука и потрясающий паук Гвен. У MCU (Marvel Cinematic Universe) есть только один человек-паук на данный момент. Тем не менее, давайте подсчитаем, сколько есть в нашем списке, чтобы быть в безопасности.

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

how_many_spider_mans = avengers.count('Spider Man')

print ("Count Example Example: How Manny Spider Men are there?")
print (how_many_spider_mans)

У MCU есть только один, поэтому в нашем списке есть только одно значение «Человек-паук». Итак, мы возвращаем к нам.

Count Example Example: How Manny Spider Men are there?
1

Гнездование

Мы все любили первых опекунов галактики. Великие визуальные эффекты, юмористическая природа диалога и, конечно же, каким -то образом мнение музыки 1970 -х годов с космическими приключениями. Они существуют отдельно во вселенной Marvel, кроме Мстителей на земле. Однако в бесконечной войне они все объединяются в один из лучших диалогов в MCU. Итак, у нас есть наш список героев на земле. Теперь приходит еще одна крутая команда, которая присоединилась к ним. Итак, давайте создадим наш новый список.

gotg = ['Star Lord', 'Rocket', 'Groot', 'Drax', 'Gamora']

Теперь, когда у нас есть наш новый список, нам нужно как -то найти способ включить их в Мстителей. Python вложенные списки на помощь. С списками Python вы можете гнездовать списки внутри списков. Есть приложения для этого. Например, хранение связанной информации в списке было бы отличным использованием. Однако в этом конкретном примере может быть лучше использовать класс. Подробнее об этом позже. Итак, давайте добавим опекунов в список Мстителей.

avengers.append(gotg)

print ("Append Nested List Example: ")
for x in avengers:
    print (x)

После печати нашего списка мы видим, что у нас есть список опекунов, а также список других наших Мстителей. Отличная работа, Кевин Фейдж!

Append Nested List Example:
Iron Man
Captain America
Black Widow
The Hulk
Hawkeye
Thor
Falcon
Black Panther
['Star Lord', 'Rocket', 'Groot', 'Drax', 'Gamora']

Предупреждающие спойлеры впереди !!

Теперь это предупреждение. Если вы не видели Мстителей: Бесконечная война, пожалуйста, пропустите это. Это огромный конец, и если вы вообще заботитесь о фильмах, пожалуйста, не стесняйтесь пропустить до конца. Вы были предупреждены.

Серьезно, впереди спойлер. Это глупо.

Хорошо, вас предупредили. Для тех из нас, кто видел бесконечную войну, мы все знаем, как это заканчивается. Это душераздирающе. Я смотрел это полностью в шоке. Я все еще обрабатываю. В конце большинство Мстителей убиты. Не все из них, однако хорошая часть. Так что теперь нам нужно обновить наш список. Здесь мы можем использовать четкую функцию, чтобы очистить наш список Мстителей, поскольку большинство из них больше не существует. Некоторые в списке все еще существуют в MCU, однако, используя конец фильма, подходит для этого метода.

avengers.clear()

print ("Clear Example: ")
print (avengers)

Что печатает

Clear Example:
[]

Теперь, когда мы печатаем наш список, мы получаем пустой список. Я все еще не за этим. Обычно эти фильмы не находятся в ближайшее время эмоционально. Это изменилось с тех пор, как вышли такие фильмы, как Black Panther, которые справляются с огромными сложными предметами в нюансированном и интересном способе. Я рад видеть, как фильмы продолжают поднимать бар.

Вывод

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

Полный исходный код можно найти здесь: https://github.com/georgeo1989/data Структурные строки

Оригинал: “https://dev.to/georgeoffley/data-structures-in-python-lists-and-the-avengers-305f”