合并两个不同长度的列表 python

Combine two lists of different length python

我有这个代码:

L = [1, x, x**2]
L2 = [1, 2*x]
def my_mul(x,y):
    if x == None: return y
    if y == None: return x
    return x*y
map(my_mul, L, L2)

这产生了我想要的结果,它是 L 和 L2 的元素乘积。

[1, 2*x^2, x^2]

但是有没有更 pythonic 的方法来实现这个?

具体来说,我可以不定义我自己的函数吗?

下面的代码应该可以满足您的需求

import itertools
import operator

l1 = [1, 2, 3]
l2 = [1, 2, 3, 4]

list(itertools.starmap(operator.mul, itertools.zip_longest(l1, l2, fillvalue=1)))
# result [1, 3, 9, 4]

说明

zip_longest 将压缩并填充较短列表中的缺失值:

itertools.zip_longest(l1, l2, fillvalue=1)
[(1, 1), (2, 2), (3, 3), (1, 4)]

starmap 将对每个整数对应用乘法运算符