如何将列表中的两个相邻元素相乘?
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]
我有如下列表:
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]