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