将内部列表的元素乘以列表理解

ami*_*pra 5 python collections list-comprehension list

可以使用列表理解在单行中完成吗?

lst = [[1, 2, 3], [1, 2, 3, 4], [5, 6], [9]]
products = ?? (Multiple each list elements)
Run Code Online (Sandbox Code Playgroud)

期望的输出= [6, 24, 30, 9]

我尝试过类似的东西:

products = [l[i] * l[i + 1] for l in lst for i in range(len(l) - 1)]
Run Code Online (Sandbox Code Playgroud)

但没有奏效.

Mar*_*ers 9

您可以使用reduce()将乘法应用于整数列表,以及operator.mul()执行实际乘法:

from functools import reduce

from operator import mul

products = [reduce(mul, l) for l in lst]
Run Code Online (Sandbox Code Playgroud)

在Python 3中,reduce()已被移至functools.reduce(),因此支持import声明.至于functools.reduce因为Python 2.6存在,它只是更容易,如果你需要保持你的代码都Python 2和3兼容,在那里汇入.

演示:

>>> from operator import mul
>>> lst = [[1, 2, 3], [1, 2, 3, 4], [5, 6], [9]]
>>> [reduce(mul, l) for l in lst]
[6, 24, 30, 9]
Run Code Online (Sandbox Code Playgroud)

operator.mul()可以替换,lambda x, y: x * y但为什么有一只狗和树皮自己?