У меня есть список, как показано ниже:
a = [ 1, 2 , 3, 4, s, s+1]
Я хочу сохранить первые два элемента, а затем умножить остальные два соседних элемента. Результат будет таким, как показано ниже:
b = [1, 2, 12, s**2 + s]
Я знаю, что если мне нужно суммирование, я могу использовать код ниже:
b = [*a[:2], *map(sum, (a[i: i + 2] for i in range(2, len(a), 2)))]
print (b)
и я получу результат, который: [1, 2, 7, 2*s + 1]
Однако я не знаю, как получить результат умножения.
Спасибо
Определите пользовательскую функцию умножения:
def mul(lst):
s = 1
for x in lst:
s *= x
return s
[*a[:2], *map(mul, (a[i: i + 2] for i in range(2, len(a), 2)))]
Также можно использовать zip
:
a = list(range(1, 11))
b = a[:2] + [x*y for x, y in zip(a[2::2], a[3::2])]
b
[1, 2, 12, 30, 56, 90]