嵌套列表中每个索引点处的Sum浮点值

时间:2014-04-16 12:15:13

标签: python list

我有一个包含3个字符串的列表:

["Apple", "Orange", "Pear"]

我有一个列表列表,每个列表包含3个浮点值:

[[0.1, 0.2, 0.3], [0.4, 0.5, 0.6]]

我需要在嵌套列表中的每个索引点处对内部列表元素求和,并以以下格式输出:

[[0.5, "Apple"], [0.7, "Orange"], [0.9, "Pear"]]

我一直在学习,但这远远超出了我所知的范围。关于如何实现这一目标的任何建议都会很棒。

1 个答案:

答案 0 :(得分:6)

fruits, values = ["Apple", "Orange", "Pear"], [[0.1, 0.2, 0.3], [0.4, 0.5, 0.6]]
print zip(map(sum, zip(*values)), fruits)
# [(0.5, 'Apple'), (0.7, 'Orange'), (0.8999999999999999, 'Pear')]

在上面的代码中,

zip(*values)

将同时获取values列表中的所有相应元素。它会产生

[(0.1, 0.4), (0.2, 0.5), (0.3, 0.6)]

现在,我们可以添加它们,所以我们

map(sum, zip(*values))

查找values列表中所有相应元素的总和。结果就像这样

[0.5, 0.7, 0.8999999999999999]

现在,我们所要做的就是将其与相应的fruits进行映射,以便我们只需zip。这就是它: - )

因为你使用的是Python 3.x,其中zip返回迭代器而不是列表,你需要得到这样的列表

list(zip(map(sum, zip(*values)), fruits))

如果您想在没有zipmap的情况下执行此操作,则可以使用

result = []
for i in range(len(fruits)):
    total = 0
    for j in range(len(values)):
        total += values[j][i]
    result.append([total, fruits[i]])
print result