Как в функцию, внутри функции map() передать больше аргументов?

Всем привет. Использую функцию map() таким образом: map(func, iter). В функций func должна содержать параметры: func(arg1, arg2, arg2), где arg1 – это элемент из массива iter. Остальные два аргумента arg2 и arg2 должны быть другие, те, которые я задам, но как мне это сделать, я не понимаю. Может кто-нибудь помочь?
  • Вопрос задан
  • 175 просмотров
Решения вопроса 2
@deliro
Не надо использовать ни map, ни filter. Эта дурь в питоне совершенно нечитаема (особенно когда вложена друг в друга и не один раз). Вместо того, чтобы написать map(f, iterable), лучше использовать [f(x) for x in iterable]. Ну или если нужно ленивое исполнение, прям как в map, то генератор (f(x) for x in iterable). Точно также, как вместо filter(predicate, iterable), лучше использовать [x for x in iterable if predicate(x)]

Отвечая на твой вопрос: [f(x, arg2, arg2) for x in iterable] (скобки квадратные, круглые или фигурные — по вкусу)
Ответ написан
Комментировать
lxstvayne
@lxstvayne
Люблю Python
Вероятно, вам нужен partial из functools:
from functools import partial


def f(x, y, z): ...

map(partial(f, y=5, z=2), [1, 2, 3])
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@denislysenko
data engineer
def func(arg1, arg2=100, arg3=200):
    return (arg1*2, arg2*2, arg3*2)

iter = [1,2,3,4]
elements_by2 = list(map(func, iter))

print(elements_by2)
# вернет [(2, 200, 400), (4, 200, 400), (6, 200, 400), (8, 200, 400)]
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы