代码之家  ›  专栏  ›  技术社区  ›  Jsevillamol

合并两个不同长度的列表

  •  1
  • Jsevillamol  · 技术社区  · 7 年前

    我有以下代码:

    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)
    

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

    但是有没有一种更像蟒蛇的方式来实现这一点呢?

    具体地说,我能在不定义自己功能的情况下做到这一点吗?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Kamil Niski    7 年前

    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

    推荐文章