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)
但没有奏效.
您可以使用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但为什么有一只狗和树皮自己?