如何将列表中的两个相邻元素相乘?

How to multiply the two nearby elements in a list?

我有如下列表:

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] 但是,我不知道如何获得乘法结果。 谢谢

这是一个类似的方法,但使用的是 itertools.starmap with operator.mul:

from operator import mul
from itertools import starmap

s= 5
a = [ 1, 2 , 3, 4, s, s+1] 

[*a[:2], *starmap(mul, (a[i: i + 2] for i in range(2, len(a), 2)))] 
# [1, 2, 12, 30]

定义自定义乘法函数:

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]