Добавить номер в список в указанном диапазоне индекса - PullRequest
1 голос
/ 12 января 2020

Вход

l = [0, 0, 1, 2, 3]

Я хочу добавить 1 в индексный диапазон от 2 до 3

, поэтому вывод должен быть

l = [0, 0, 2, 3, 3]

l[2:3] = l[2:3] + 1

Ответы [ 4 ]

2 голосов
/ 12 января 2020

Самый простой способ - использовать numpy, он довольно оптимизирован и использует циклы C / C ++ под капотом, поэтому он невероятно быстрый:

>>> 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])
>>> 
0 голосов
/ 12 января 2020

Возможное решение может использовать списочное понимание: l[2:4] = [x+1 for x in l[2:4]]

0 голосов
/ 12 января 2020

Для смешного решения:

from operator import add

l = [0, 0, 1, 2, 3]
deltas = [0, 0, 1, 1, 1]

result = list(map(add, l, deltas))

обратите внимание, что это не меняет l, но создает новый список в result

0 голосов
/ 12 января 2020

Вы можете попробовать это:

for i in range(2, 4):
    l[i] += 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...