Карта в Python: обзор функции карты в Python

Карта на Python
Источник изображения: freepik

При работе со списком в Python нам часто нужно применить одну и ту же операцию или функцию к каждому элементу списка, чтобы создать новую итерацию. Функцию Python map() можно использовать для решения такого рода проблем. Однако отображение — это средство обработки и преобразования всех объектов в итерации без использования явного цикла for, и функция Python Map() делает это возможным. Используя функцию map(), вы можете применить функцию преобразования к каждому элементу итерации и вернуть новую итерацию. В этой статье мы обсудим, как использовать карту в Python, тепловую карту в Python, структуру данных и лямбду.

Что такое Map() в Python?

В Python карта — это встроенная функция, которая применяет указанную функцию ко всем элементам итерируемого объекта (например, списку, кортежу) и возвращает итератор результатов. Общий синтаксис — это карта (функция, итерируемая). Параметр «функция» — это операция, которую необходимо применить, а параметр «итерируемый» — это последовательность элементов, к которым будет применена функция.

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

числа = [1, 2, 3, 4, 5]

Squared_numbers = карта (лямбда x: x**2, числа)

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

Кодирование с использованием функционального стиля на Python

Объединение функций, которые принимают параметры и возвращают определенное значение, — это то, как функциональное программирование выполняет вычисления. Эти операции не изменяют ни своих параметров, ни текущего состояния программы. Они просто передают вам ответ на расчет. Чистые функции — самое популярное название для этого класса функций.

В принципе, с помощью программ, написанных в функциональном стиле, должно быть проще сделать следующее:

  • Развивайтесь, потому что вы можете программировать и использовать каждую функцию изолированно.
  • Отлаживайте и тестируйте, потому что вы можете тестировать и отлаживать отдельные функции, не обращая внимания на остальную часть программы.
  • Поймите, потому что вам не нужно иметь дело с изменениями состояния на протяжении всей программы.

Более того, итерации, такие как списки, массивы и другие типы итераций, часто используются для представления данных в функциональном программировании. Функции — это то, что изменяет данные и воздействует на них. Для функциональной работы с данными используются как минимум три популярных способа:

  • Сопоставление: новая итерация создается путем применения функции преобразования к исходной итерации. Чтобы сгенерировать элементы для новой итерации, мы применяем функцию преобразования к каждому элементу в старой итерации.
  • Фильтрация: включает в себя создание новой итерации путем применения к исходной итерации предиката или функции с логическим значением. элементы в новой итерации формируются путем фильтрации любых элементов в старой итерации, из-за которых функция предиката возвращает false.
  • Сокращение: использование функции сокращения для итерации для получения одного кумулятивного числа — это то, что она делает.

По мнению Гвидо ван Россума, императивные языки оказывают на Python большее влияние, чем функциональные. Однако в 1993 году пользователи Python обратились за поддержкой к методам функционального программирования. Им нужно было:

  • Анонимные функции
  • Функция карты()
  • Функция фильтра()
  • Функция уменьшения()

Эти функциональные возможности были добавлены в язык благодаря участию члена сообщества. В современном Python функции Map(), Filter() и Reduc() являются важными строительными блоками парадигмы функционального программирования.

Как работает карта в Python?

Функция карты Python принимает как функцию, так и итерируемый или итерируемый объект в качестве входных данных. Он итеративно обрабатывает итерацию, преобразуя каждый элемент по мере его выполнения. Результат преобразования возвращается в виде объекта карты. В качестве входной функции можно использовать любую вызываемую функцию, например встроенную, лямбда-функцию, пользовательскую функцию, метод класса или статический метод. Посмотрите, как работает метод map(), выполнив то же умножение, что и в предыдущем примере, но на этот раз используя цикл for и функции карты независимо.

Пример: использование цикла For

число = [3, 5, 7, 11, 13]

мул = []

для n в числе:

   mul.append(n ** 2)

печать (мул)

Вывод:

Пример: использование функции Python Map()

защита mul(i):

 вернуть я * я

число = (3, 5, 7, 11, 13)

resu = карта (мул, число)

печать (резу)

# делаем объект карты читабельным

mul_output = список (резу)

печать (mul_output)

Вывод:

Как и цикл for, функция map() циклически перемещается по итерируемому объекту. Когда цикл завершается, возвращается объект карты. Затем вы можете преобразовать объект карты в список и вывести его. На этот раз вы использовали карту в Python и, вероятно, также заметили, что итерируемый объект был определен независимо, а затем передан в функцию map(). Следовательно, итерируемый объект может быть определен либо внутри функции map(), либо независимо.

Как использовать функцию карты Python

Чтобы применить функцию к каждому элементу в итерируемом объекте (например, списке или словаре) и вернуть новый итератор для получения результатов, мы можем использовать встроенную функцию Map() в Python. Мы можем использовать объект карты, возвращаемый функцией map(), в других частях нашего кода. Чтобы сгенерировать итерацию, мы также можем использовать функцию list() или другой тип последовательности и отправить ее объекту карты в качестве аргумента.

Чтобы использовать метод map(), вы должны написать что-то вроде этого:

карта(функция, итерируемый, [итерируемый 2, итерируемый 3, …])

Вместо использования цикла for функция map() предоставляет способ применения функции к каждому элементу в итерации. Следовательно, это может быть быстрее, чем создавать копии вещей в другой итерации, поскольку функция применяется к каждому элементу индивидуально. Это очень полезно при разработке программного обеспечения для обработки огромных объемов данных. Доставляя в функцию по одному элементу из каждой итерации за раз, map() может принимать несколько итераций в качестве параметров. Вот различные способы использования функции карты Python:

№1. Использование лямбда-функции

Первый ввод в функцию map() — это функция, которая поочередно применяется к каждому элементу. В Python метод запускается один раз для каждого элемента в итерации, которую мы передаем в карту(), и измененный элемент возвращается в объекте карты. В зависимости от сложности выражения мы можем либо использовать пользовательскую функцию в качестве первого аргумента функции, либо использовать лямбда-функцию.

Чтобы использовать map() с лямбда-функцией, код выглядит следующим образом:

map(лямбда-элемент: выражение item[], итерируемый)

Чтобы применить выражение к каждому элементу списка, мы можем использовать лямбда-функцию со следующим списком:

числа = [10, 15, 21, 33, 42, 55]

Чтобы применить выражение к каждому из наших чисел, мы можем использовать map() и лямбда:

mapped_numbers = список (карта (лямбда x: x * 2 + 3, числа))

Один из пунктов нашего списка, x, теперь официально назван. Затем мы добавляем наше выражение. В качестве итерации мы предоставляем нашу коллекцию целых чисел функции map(). Чтобы вы могли сразу увидеть результаты, выводим список объектов карты:

печать (сопоставленные_числа)

Вывод: [23, 33, 45, 69, 87, 113]

Мы использовали list(), чтобы объект карты доставлялся нам в виде списка, а не менее читабельного объекта, такого как . Используя for, мы можем перебирать объект карты, который является итератором наших результатов, или мы можем использовать list() для преобразования объекта карты в список. Нет лучшего места для ознакомления с результатами, чем здесь.

В результате мы, вероятно, продолжим работу с объектом карты и не будем использовать для него такой конструктор, как list(), поскольку функция map() наиболее полезна при работе с большими наборами данных.

№2. Реализация пользовательской функции

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

Пример

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

Aquarium_creatures = [

  • {"имя": "Сэмми", "вид": "акула", "номер резервуара": 11, "тип": "рыба"},
  • {"имя": "эшли", "вид": "краб", "номер резервуара": 25, "тип": "моллюск"},
  • {"имя": "дзё", "вид": "гуппи", "номер резервуара": 18, "тип": "рыба"},
  • {"имя": "джеки", "вид": "лобстер", "номер резервуара": 21, "тип": "моллюск"},
  • {"имя": "Чарли", "вид": "рыба-клоун", "номер резервуара": 12, "тип": "рыба"},
  • {"имя": "олли", "вид": "зеленая черепаха", "номер резервуара": 34, "тип": "черепаха"}]

Мы решили, что все прудовые животные будут жить в одном аквариуме. Все наши животные помещаются в резервуар 42, поэтому нам нужно убедиться, что наши записи актуальны. Мы создаем сложную функцию, чтобы функция map() могла получить доступ к каждому словарю и каждой паре ключ: значение в этих словарях:

def Assign_to_tank(aquarium_creatures, new_tank_number):

защита применить(х):

x[“номер резервуара”] = новый_номер_танка

вернуть х

вернуть карту (применить, Aquarium_creatures)

Параметры Aquarium_creatures и new_tank_number определены для функции Assign_to_tank(). Мы используем apply() в качестве функции для отправки в Map() в самом конце метода Assign_to_tank(). Функция Assign_to_tank возвращает итератор, созданный функцией Map().

apply() принимает x в качестве параметра, где x — один из словарей в нашей коллекции.

Затем мы указываем, что новый номер резервуара будет сохранен в x, где x — это ключ «номера резервуара» из Aquarium_creatures. После обновления номера резервуара мы отправляем вам все обратно. Мы заменяем старый номер танка на новый для каждого существа, вызывая метод Assign_to_tank() с нашим списком словарей и новым номером танка:

назначенные_танки = назначенные_на_танк(aquarium_creatures, 42)

Продолжение:

После завершения функции наш объект карты сохраняется в переменной назначенных_танков, которую мы превращаем в список и печатаем:

печать (список (назначенные_танки))

Мы получим следующий вывод из этой программы:

Результат

[{'name': 'Сэмми', 'виды': 'акула', 'номер резервуара': 42, 'тип': 'рыба'}, {'name': 'Эшли', 'виды': 'краб' , «номер резервуара»: 42, «тип»: «моллюск»}, {'имя»: «jo», «вид»: «гуппи», «номер резервуара»: 42, «тип»: «рыба»}, {'name': 'джеки', 'виды': 'лобстер', 'номер резервуара': 42, 'тип': 'моллюски'}, {'name': 'Чарли', 'виды': 'рыба-клоун', 'номер резервуара': 42, 'тип': 'рыба'}, {'имя': 'олли', 'вид': 'зеленая черепаха', 'номер резервуара': 42, 'тип': 'черепаха'}]

Кроме того, мы добавили новый номер танка в нашу базу переводов. Используя определяемую нами функцию, мы можем использовать map() для эффективного применения функции к каждому элементу списка.

№3. Использование встроенной функции с несколькими итерируемыми объектами

Встроенные функции Python, такие как map(), можно использовать так же, как лямбда-функции или пользовательские функции. При вызове функции, которая принимает несколько итераций, мы добавляем имя каждой дополнительной итерации после первого. Например, вы можете вычислить степень данного базового числа с учетом показателя степени, вызвав функцию pow(), которая принимает в качестве входных данных два числа.

Здесь у нас есть списки целых чисел, которые мы хотели бы использовать с pow():

base_numbers = [2, 4, 6, 8, 10]

степени = [1, 2, 3, 4, 5]

Затем мы используем map(), предоставляя два списка как итерируемые и передавая функцию pow():

Numbers_powers = список (карта (pow, base_numbers, степени))

печать (numbers_powers)

Map() применит функцию pow() к одному и тому же элементу в каждом списке, чтобы обеспечить мощность. Таким образом, наши результаты будут показывать 2**1, 4**2, 6**3 и т. д.

Результат

[2, 16, 216, 4096, 100000]

Учитывая две итерации, если одна из них значительно длиннее другой, Map() прекратит обработку, когда достигнет конца более короткой итерации. В следующем коде мы добавляем три новые цифры в base_numbers:

base_numbers = [2, 4, 6, 8, 10, 12, 14, 16]

степени = [1, 2, 3, 4, 5]

Numbers_powers = список (карта (pow, base_numbers, степени))

печать (numbers_powers)

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

Результат

[2, 16, 216, 4096, 100000]

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

Есть ли у Python тип карты?

Да, в Python есть встроенный тип карты, называемый «словарь». В Python словарь — это неупорядоченная, изменяемая и индексированная коллекция. Он состоит из пар ключ-значение, где каждый ключ должен быть уникальным. Словари создаются с использованием фигурных скобок {} и могут быть инициализированы парами ключ-значение.

Вот простой пример:

# Создание словаря

my_dict = {“имя”: “Джон”, “возраст”: 30, “город”: “Нью-Йорк”}

# Доступ к значениям с помощью ключей

print(my_dict[“имя”]) # Вывод: Джон

print(my_dict[“возраст”]) # Вывод: 30

print(my_dict[“city”]) # Вывод: Нью-Йорк

В этом примере «имя», «возраст» и «город» являются ключами, а «Джон», 30, и «Нью-Йорк» — соответствующими им значениями. Словари универсальны и широко используются в Python для различных целей, например для представления структурированных данных, конфигураций или сопоставлений между сущностями.

Если вам нужна упорядоченная карта, начиная с Python 3.7, словари сохраняют порядок вставки элементов, обеспечивая упорядоченный тип отображения. Кроме того, в Python 3.8 появились коллекции. Тип OrderedDict, гарантирующий сохранение порядка элементов словаря.

Карта Python быстрее, чем цикл?

Сравнение производительности при использовании функции map() и цикла (например, цикла for) в Python зависит от различных факторов, включая конкретный вариант использования, размер данных и сложность выполняемых операций. В общем, разница в производительности между ними часто незначительна для небольших наборов данных, и выбор между ними часто зависит от читабельности и стиля кодирования.

map() и циклы служат разным целям:

№1. функция карты()

  • Удобно кратко применять функцию к каждому элементу итерируемого объекта.
  • Обеспечивает функциональный стиль программирования.
  • Может быть более читабельным для простых операций.

числа = [1, 2, 3, 4, 5]

Squared_numbers = карта (лямбда x: x**2, числа)

№ 2. Петля

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

числа = [1, 2, 3, 4, 5]

Squared_numbers = []

для числа в цифрах:

    Squared_numbers.append(число**2)

Для более крупных наборов данных расхождения в производительности могут стать более очевидными. Встроенные функции, такие как map(), filter() и списки, имеют свои собственные внутренние оптимизации, которые могут сделать их немного быстрее в определенных ситуациях. Хотя это может оказать некоторое влияние на производительность, обычно оно оказывает лишь незначительный эффект, а другие аспекты, такие как читаемость кода и удобство сопровождения, более важны.

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

Структура данных карты Python

В Python термин «карта» часто используется для обозначения встроенной функции map() или структуры данных словаря, которая в Python является типом отображения. Однако в Python нет конкретной встроенной структуры данных с именем «map».

№1. функция карты()

Как упоминалось ранее, функция map() сама по себе не является структурой данных, а встроенной функцией, используемой для применения указанной функции к каждому элементу в итерации.

числа = [1, 2, 3, 4, 5]

Squared_numbers = карта (лямбда x: x**2, числа)

№2. Словарь (тип сопоставления)

Термин «карта» иногда неофициально используется для обозначения словарей Python. Словарь — это набор пар ключ-значение, обеспечивающий сопоставление ключей и связанных с ними значений.

my_dict = {“имя”: “Джон”, “возраст”: 30, “город”: “Нью-Йорк”}

Здесь ключи («имя», «возраст», «город») соответствуют соответствующим значениям («Джон», 30, «Нью-Йорк»).

Если вы специально ищете структуру данных с характеристиками, подобными карте (например, ассоциативный массив или хэш-карта), то встроенный словарь (dict) является основным выбором в Python. Он обеспечивает эффективный поиск на основе ключей и обычно используется для различных целей, включая хранение конфигураций, представление связей и многое другое.

Карта в Python Lambda

Метод map() в Python, когда он используется в сочетании с лямбда-функцией, предлагает лаконичный и надежный подход к применению указанной операции к каждому элементу в итерируемом объекте. Кроме того, функция map() — это встроенная функция Python, требующая два аргумента. Первый аргумент — это функция, которая будет применена, а второй аргумент — это итерируемый объект, на который будет отображаться функция.

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

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

Список чисел, обозначенный как [1, 2, 3, 4, 5], подвергается операции сопоставления с использованием лямбда-функции. Эта лямбда-функция возводит каждое число в степень 2, в результате чего создается новый список с именем Squared_numbers.

В этом примере определена функция лямбда x: x**2 для вычисления квадрата ее входных данных. Впоследствии метод map() использует вышеупомянутую лямбда-функцию для каждого отдельного элемента в списке «числа», генерируя итератор, содержащий значения в квадрате.

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

Тепловая карта в Python

В Python создание тепловой карты часто выполняется с использованием таких библиотек, как Matplotlib и Seaborn. Вот базовый пример использования Matplotlib и Seaborn для создания тепловой карты:

  • импортировать numpy как np
  • импорт морского как sns
  • импортировать matplotlib.pyplot как plt

# Создайте образец матрицы данных

данные = np.random.rand(5, 5)

# Создайте тепловую карту с помощью Seaborn

sns.heatmap(data, annot=True, cmap=”YlGnBu”, cbar=True)

#Показать сюжет

plt.show ()

В этом примере:

  • np.random.rand(5, 5) генерирует матрицу случайных значений размером 5×5 (вы должны заменить ее фактическими данными).
  • sns.heatmap() используется для создания тепловой карты. Параметр annot=True отображает значения на тепловой карте, а cmap определяет карту цветов.

Обязательно установите Matplotlib и Seaborn, если вы еще этого не сделали:

pip установить matplotlib seaborn

Вы можете дополнительно настроить тепловую карту, настроив такие параметры, как карта цветов (cmap), добавив метки осей или изменив матрицу данных в соответствии с вашим конкретным вариантом использования.

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

Резюме  

Эта статья послужила введением в функцию карты Python. Вам было показано несколько примеров, которые помогут вам понять, как это работает с различными итерациями и функциями. Функция Python map() применяет функцию преобразования ко всей итерации; поэтому важно помнить об этом. Кроме того, итерации можно передавать в функцию map() несколько раз.

Часто задаваемый вопрос

Могу ли я создать карту на Python?

Да, вы можете создать карту в Python, используя словарь. Используйте фигурные скобки {} и определите пары ключ-значение. Например: my_map = {“ключ1”: “значение1”, “ключ2”: “значение2”}. Словари универсальны и широко используются для сопоставления отношений между ключами и связанными с ними значениями в Python.

Что делает карта()?

Функция map() в Python применяет указанную функцию к каждому элементу итерируемого объекта, например списка. Он возвращает итератор результатов. Например, map(lambda x: x**2, [1, 2, 3]) возводит в квадрат каждый элемент, создавая итератор [1, 4, 9].

похожие статьи

  1. КАК ЗАПИСАТЬ POWERPOINT: объяснено!
  2. ВЗЛОМ ПАРОЛЯ: определение и методы взлома
  3. КАК ИЗМЕНИТЬ ЦВЕТ ОБЪЕКТА В ФОТОШОП: 5 ПРОСТЫХ способов
  4. AWS CLOUD9: обзор, функции, цены и многое другое
  5. ПОКРЫТИЕ AT&T 5G: карты, города, планы и все, что нужно знать

Референции

0 раз поделились:
Оставьте комментарий

Ваш электронный адрес не будет опубликован. Обязательные поля помечены * *

Вам также может понравиться
Анализатор протокола
Читать

АНАЛИЗАТОР ПРОТОКОЛА: Полное руководство

Оглавление Скрыть Что такое анализатор протоколов? Анализатор сетевых протоколов Анализатор протоколов WiresharkДополнительная информация Инструмент анализатора протоколовЛучшие инструменты анализатора протоколов#1.…
6-месячные программы сертификации, которые хорошо оплачиваются
Читать

Лучшие 6-месячные программы сертификации, которые хорошо платят в 2024 году

Оглавление Скрыть Лучшие 6-месячные программы сертификатов, которые хорошо платят 2024 # 1. Техник по ОВКВ №2. Сертифицированный этический хакер…
МЭКМ
Читать

MECM: что такое диспетчер конфигурации конечных точек Microsoft

Оглавление Скрыть Что такое MECM?Услуги, доступные через MECM#1. Защита конечных точек №2. Обновления программного обеспечения №3. Инвентаризация оборудования № 4. Удаленная помощь/Удаленный…