Замените элементы списка Python нечетной позицией с другим значением

У меня есть список

l = ['3a' '4a' '5a' '6a' '7a' '4a' '4a' '5a' '6a' '7a' '4a']

и хотите заменить только элементы с нечетным положением в списке. Результат должен выглядеть следующим образом:

res = ['xx' '4a' 'xx' '6a' 'xx' '4a' 'xx' '5a' 'xx' '7a' 'xx']

python,list,

-2

Ответов: 3


3 принят
def replace_odd(l, v='xx'):
    return [v if not i%2 else x for i,x in enumerate(l)]

0

В вашем примере вы хотите заменить четные элементы, так как в 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'

0

Вы можете использовать комбинацию 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']
питон, список,