def replace_odd(l, v='xx'):
return [v if not i%2 else x for i,x in enumerate(l)]
В вашем примере вы хотите заменить четные элементы, так как в python первый элемент имеет индекс 0.
Стандартный питон:
l = ['3a', '4a', '5a', '6a', '7a', '4a', '4a', '5a', '6a', '7a', '4a']
for i in range(0, len(l), 2):
l[i] = 'xx'
Использование numpy:
import numpy as np
l = np.array(['3a', '4a', '5a', '6a', '7a', '4a', '4a', '5a', '6a', '7a', '4a'])
l[::2] = 'xx'
Вы можете использовать комбинацию cycle
и chain
из itertools
модуля.
from itertools import cycle, chain
l = ['3a', '4a', '5a', '6a', '7a', '4a', '4a', '5a', '6a', '7a', '4a']
print(list(chain.from_iterable(zip(l[1::2], cycle(['xx'])))))
Эти результаты:
['4a', 'xx', '6a', 'xx', '4a', 'xx', '5a', 'xx', '7a', 'xx']