map()
может принимать несколько итерируемых объектов (списков, кортежей и т.д.) в качестве аргументов. В этом случае, переданная ей функция применяется к элементам, взятым из каждого итерируемого объекта параллельно. Главное, чтобы функция принимала количество аргументов, равное количеству переданных итерируемых объектов.
map(lambda x, y: x + y, [1, 2, 3], [4, 5, 6])
вернет итератор, который при преобразовании в список даст [5, 7, 9]
.
Функция map()
в Python позволяет применять функцию к каждому элементу итерируемого объекта (например, списка). Для работы с несколькими списками одновременно, map()
принимает функцию, которая ожидает несколько аргументов, и затем принимает несколько итерируемых объектов в качестве аргументов. Функция применяется к элементам из каждого итерируемого объекта параллельно.
Рассмотрим пример:
def add(x, y):
return x + y
list1 = [1, 2, 3]
list2 = [4, 5, 6]
result = list(map(add, list1, list2))
print(result) # Output: [5, 7, 9]
В этом примере, функция add
принимает два аргумента (x
и y
). map()
вызывает add
с первым элементом list1
и первым элементом list2
, затем со вторым элементом каждого списка, и так далее. Результат, возвращаемый map()
, является итератором, который мы преобразуем в список с помощью list()
.
Если списки имеют разную длину, map()
остановится, когда самый короткий список будет исчерпан. Остальные элементы из более длинных списков будут проигнорированы.
list1 = [1, 2, 3, 4, 5]
list2 = [6, 7, 8]
result = list(map(lambda x, y: x * y, list1, list2))
print(result) # Output: [6, 14, 24]
В этом случае, результат содержит только 3 элемента, так как list2
имеет длину 3. Часто, лямбда-функции используются непосредственно внутри map()
для краткости, как показано в примере выше.
Важно помнить, что map()
возвращает итератор. Чтобы получить реальный список результатов, необходимо преобразовать итератор в список с помощью list()
или использовать его в цикле for
.