python: записать в список с заданным шагом одно значение
требуется в список arr записать значение value с позиции start с шагом step
подскажите, как это можно сделать максимально производительно
я использую такой способ:
arr[start::step] = [value] * (len(arr) - start - 1)
но есть ли более производительный способ?
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Для массивов достаточно большого размера Numpy вроде неплохо ускоряет.
Простой Python:
arr = list(range(10000))
start = 10
step = 5
value = 42
%timeit arr[start::step] = [value] * ((len(arr) - start - 1 + step)//step)
# 16.6 µs ± 1.08 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
Для Numpy размножать значение не нужно:
import numpy as np
arr = np.arange(10000)
start = 10
step = 5
value = 42
%timeit arr[start::step] = value
# 2.87 µs ± 580 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)