Предполагая, что вы не хотите использовать прямое решение путем итерации списка индексов:
Проблема в том, что одна из переменных, от которых вы зависите (индекс), не включена в Ваш звонок на map
. Вам нужно будет вставить это в вызов карты каким-либо образом, например, с помощью enumerate
- который выдаст кортеж (idx, value)
для каждого элемента в вашем списке.
nums = [123, 456, 1, 0, -2, 13, 15, 29, 47, 48]
indices = [0, 1, 2, 3]
result = list(
map(
lambda x: x[1] + 10 if x[0] in indices else x[1],
enumerate(nums)
)
)
print(result)
Имейте в виду, что часть if x[0] in indices
будет искать список индексов линейно и выполнит всю операцию O(n * m)
. Это можно оптимизировать, используя вместо этого набор (в котором в качестве общего случая используется поиск O (1)) или словарь.
> [133, 466, 11, 10, -2, 13, 15, 29, 47, 48]