Например я пробовал через index , но что-то пошло не так :
s = [5, 6, 7, 3, 4, 5, 6, 4, 5, 6] a = [] for i in s: m = s.index(i) if m % 2 == 0: i = i * 2 a.append(i) elif s.index(i) % 2 != 0: a.append(i) print(a)
Ну а вообще оно должно вывести :
[10 , 6 , 14 , 3 , 8 , 5 , 6 , 8 , 5 , 12]
Анонимный пользователь Изменен статус публикации
Чтобы умножить элементы с чётными индексами:
>>> L = [5, 6, 7, 3, 4, 5, 6, 4, 5, 6] >>> L[::2] = [2*x for x in L[::2]] >>> L [10, 6, 14, 3, 8, 5, 12, 4, 10, 6]
Если не хочется в памяти половину списка создавать, можно по месту заменить:
for i in range(len(L)): if i % 2 == 0: # even index L[i] *= 2
Результат тот же.
Если на входе у вас был бы numpy
массив, то можно было бы лаконичный a[::2] *= 2
синтаксис использовать:
>>> import numpy # $ pip install numpy >>> a = numpy.array([5, 6, 7, 3, 4, 5, 6, 4, 5, 6]) >>> a[::2] *= 2 >>> a array([10, 6, 14, 3, 8, 5, 12, 4, 10, 6])
Можно вот так:
In [62]: s Out[62]: [5, 6, 7, 3, 4, 5, 6, 4, 5, 6] In [63]: [x if i % 2 != 0 else x*2 for i,x in enumerate(s)] Out[63]: [10, 6, 14, 3, 8, 5, 12, 4, 10, 6]
PS enumerate:
enumerate(sequence, start=0)
Return an enumerate object. sequence must be a sequence, an iterator, or some other object which supports
iteration. The next() method of the iterator returned by enumerate()
returns a tuple containing a count (from start which defaults to 0)
and the values obtained from iterating over sequence: