Вход
l = [0, 0, 1, 2, 3]
Я хочу добавить 1 в индексный диапазон от 2 до 3
, поэтому вывод должен быть
l = [0, 0, 2, 3, 3] l[2:3] = l[2:3] + 1
Самый простой способ - использовать numpy, он довольно оптимизирован и использует циклы C / C ++ под капотом, поэтому он невероятно быстрый:
numpy
>>> import numpy as np >>> a = [0, 0, 1, 2, 3] >>> b = np.array(a) >>> b[2:4] += 1 >>> b array([0, 0, 2, 3, 3]) >>>
Возможное решение может использовать списочное понимание: l[2:4] = [x+1 for x in l[2:4]]
l[2:4] = [x+1 for x in l[2:4]]
Для смешного решения:
from operator import add l = [0, 0, 1, 2, 3] deltas = [0, 0, 1, 1, 1] result = list(map(add, l, deltas))
обратите внимание, что это не меняет l, но создает новый список в result
l
result
Вы можете попробовать это:
for i in range(2, 4): l[i] += 1