【问题标题】:Sum lists in pythonpython中的求和列表
【发布时间】:2019-04-10 18:58:48
【问题描述】:

我有两个列表:

list_1 = [a1, a2, a3, ... a36]
list_2 = [b1, b2, b3,... b12]

根据诸如

之类的算法,我怎样才能得到这两个列表的总和
a1 + b1, a1+b2, a1+b3,... , a1+b12 
then 
a2+b1, a2+b2, a2+b3,..., a2+b12

【问题讨论】:

标签: python-3.x


【解决方案1】:

这个简单的代码也可以工作:

list_1 = [1, 2, 3, 4]
list_2 = [5, 6, 7]
list_3 = [a+b for a in list_1 for b in list_2] # Adding them up pairwise

现在,list_3 将包含所有总和。

【讨论】:

  • 这是我什至比我更喜欢的解决方案 :) 特别是因为它不需要外部导入
【解决方案2】:

从你的问题来看,你似乎想要这个:

list_1 = [1,2,3]
list_2 = [4,5,6]

list_2_sum = sum(list_2)

[i + list_2_sum for i in list_1]
#[16, 17, 18]

或者如果你list_1 更长:

list_1 = [1, 2, 3, 4]
list_2 = [4, 5, 6]

list_2_sum = sum(list_2)

[x + list_2_sum for x, _ in zip(list_1, list_2)]
#[16, 17, 18]

【讨论】:

    【解决方案3】:

    使用itertools.product

    例如:

    from itertools import product
    
    
    list_1 = [1,2,3]
    list_2 = [4,5,6]
    
    print([sum(i) for i in product(list_1, list_2)])
    

    输出:

    [5, 6, 7, 6, 7, 8, 7, 8, 9]
    

    【讨论】:

    • 这是我什至比我更喜欢的解决方案 :) 唯一的缺点是需要导入,而且“产品”的作用对每个人来说可能并不明显 - 但在所有提议的解决方案中,这是最合理的我,荣誉!
    猜你喜欢
    • 1970-01-01
    • 2022-10-12
    • 1970-01-01
    • 2015-06-02
    • 2018-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多