Python 打印四个不同浮动列表的总和?

Python 打印四个不同浮动列表的总和?,python,list,Python,List,目前,我有四个列表,我想把它们总结成一个列表 L1 = [2.3,4.5,6.9] L2 = [1.2,3.5,5.4] L3 = [12.1,6.8,2.4] L4 = [15.2,5.9,11.7] 这将使我: newList = [30.8,20.7,26.4] 我查找了许多利用拉链的方法,但我正在寻找一种长期使用的方法。如果没有任何方便的方法,我不介意使用拉链,只是好奇而已 基本上,我会创建一个新的列表,但我无法计算总和部分 newL = [] for val in L1:

目前,我有四个列表,我想把它们总结成一个列表

L1 = [2.3,4.5,6.9]
L2 = [1.2,3.5,5.4]
L3 = [12.1,6.8,2.4]
L4 = [15.2,5.9,11.7]
这将使我:

newList = [30.8,20.7,26.4]
我查找了许多利用拉链的方法,但我正在寻找一种长期使用的方法。如果没有任何方便的方法,我不介意使用拉链,只是好奇而已

基本上,我会创建一个新的列表,但我无法计算总和部分

newL = []
for val in L1:
    for val in L2:??

您可以像这样使用zip:

[sum(t) for t in zip(L1, L2, L3, L4)]
# [30.799999999999997, 20.700000000000003, 26.4]

您可以像这样使用zip:

[sum(t) for t in zip(L1, L2, L3, L4)]
# [30.799999999999997, 20.700000000000003, 26.4]

假设所有四个列表的长度相同,备选解决方案如下:

  • 列表理解:

    sumsList = [L1[i]+L2[i]+L3[i]+L4[i] for i in range(len(L1))]
    
    ,另一种解决方案,在我看来,更优雅:

    someList = [L1,L2,L3,L4]
    sumsList = [sum([l[i] for l in someList]) for i in range(len(L1))]
    
  • 对于in
    循环:

    sumsList = []
    for i in range(len(L1)):
        sumsList.append(L1[i]+L2[i]+L3[i]+L4[i])
    
结果:
[30.79999999997,20.7000000000003,26.4]


最好的部分:不使用
zip()

假设所有四个列表的长度相同,替代解决方案如下:

  • 列表理解:

    sumsList = [L1[i]+L2[i]+L3[i]+L4[i] for i in range(len(L1))]
    
    ,另一种解决方案,在我看来,更优雅:

    someList = [L1,L2,L3,L4]
    sumsList = [sum([l[i] for l in someList]) for i in range(len(L1))]
    
  • 对于in
    循环:

    sumsList = []
    for i in range(len(L1)):
        sumsList.append(L1[i]+L2[i]+L3[i]+L4[i])
    
结果:
[30.79999999997,20.7000000000003,26.4]


最好的部分:不使用
zip()
我想你可以使用
map
sum
zip

list_sums = map(sum, zip(L1,L2,L3,L4))
# [30.799999999999997, 20.700000000000003, 26.4]

我想你可以使用
map
sum
zip

list_sums = map(sum, zip(L1,L2,L3,L4))
# [30.799999999999997, 20.700000000000003, 26.4]

zip
将是最好的答案

newList = [a + b + c + d for a,b,c,d in zip(L1,L2,L3,L4)]

zip
将是最好的答案

newList = [a + b + c + d for a,b,c,d in zip(L1,L2,L3,L4)]

如果不想更改最终产品,则元组的构造速度要比列表快得多,在生成器之前表示tuple(),如下所示:

total_of_each_element = tuple(sum(t) for t in zip(L1,L2,L3,L4))
这是我的代码

L1 = [2.3,4.5,6.9]
L2 = [1.2,3.5,5.4]
L3 = [12.1,6.8,2.4]
L4 = [15.2,5.9,11.7]

total_of_each_element = tuple(sum(t) for t in zip(L1,L2,L3,L4))
print (total_of_each_element)
印刷品:

(30.799999999999997, 20.700000000000003, 26.4)
(30.8, 20.7, 26.4)
[30.8, 20.7, 26.4]
要绕过它:

total_of_each_element = tuple(round(sum(t),2) for t in zip(L1,L2,L3,L4))
print (total_of_each_element)
印刷品:

(30.799999999999997, 20.700000000000003, 26.4)
(30.8, 20.7, 26.4)
[30.8, 20.7, 26.4]
或者,使所有列表的长度相同,在较短的列表中添加零:

lists = [L1,L2,L3,L4]
longest = len(max(lists,key=len))
for lst in lists:
    if len(lst) < longest:
        n = longest - len(lst)
        for i in range(n):
            lst.append(0)
印刷品:

(30.799999999999997, 20.700000000000003, 26.4)
(30.8, 20.7, 26.4)
[30.8, 20.7, 26.4]

如果不想更改最终产品,则元组的构造速度要比列表快得多,在生成器之前表示tuple(),如下所示:

total_of_each_element = tuple(sum(t) for t in zip(L1,L2,L3,L4))
这是我的代码

L1 = [2.3,4.5,6.9]
L2 = [1.2,3.5,5.4]
L3 = [12.1,6.8,2.4]
L4 = [15.2,5.9,11.7]

total_of_each_element = tuple(sum(t) for t in zip(L1,L2,L3,L4))
print (total_of_each_element)
印刷品:

(30.799999999999997, 20.700000000000003, 26.4)
(30.8, 20.7, 26.4)
[30.8, 20.7, 26.4]
要绕过它:

total_of_each_element = tuple(round(sum(t),2) for t in zip(L1,L2,L3,L4))
print (total_of_each_element)
印刷品:

(30.799999999999997, 20.700000000000003, 26.4)
(30.8, 20.7, 26.4)
[30.8, 20.7, 26.4]
或者,使所有列表的长度相同,在较短的列表中添加零:

lists = [L1,L2,L3,L4]
longest = len(max(lists,key=len))
for lst in lists:
    if len(lst) < longest:
        n = longest - len(lst)
        for i in range(n):
            lst.append(0)
印刷品:

(30.799999999999997, 20.700000000000003, 26.4)
(30.8, 20.7, 26.4)
[30.8, 20.7, 26.4]

您可以使用numpy。您只需将它们更改为numpy数组并进行简单的加法

import numpy as np
print np.array(L1)+np.array(L2)+np.array(L3)+np.array(L4)

您可以使用numpy。您只需将它们更改为numpy数组并进行简单的加法

import numpy as np
print np.array(L1)+np.array(L2)+np.array(L3)+np.array(L4)