Python 嵌套列表中每个索引点的浮点值总和

Python 嵌套列表中每个索引点的浮点值总和,python,list,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"]] 我边学边学,但这超出了我目前所知的范围。任何关于如何实现这一点的建议都将是非常好的 fruits, values = ["Appl

我有一个包含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"]]
我边学边学,但这超出了我目前所知的范围。任何关于如何实现这一点的建议都将是非常好的

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)
将把
列表中的所有对应元素放在一起。它将产生

[(0.1, 0.4), (0.2, 0.5), (0.3, 0.6)]
现在,我们可以添加它们,所以我们这样做

map(sum, zip(*values))
它查找
列表中所有对应元素的总和。结果是这样的

[0.5, 0.7, 0.8999999999999999]
list(zip(map(sum, zip(*values)), fruits))
现在,我们所要做的就是将它与相应的
水果
进行映射,因此我们只需
zip
就可以了。就这样:-)

因为您使用的是Python3.x,其中
zip
返回一个迭代器而不是一个列表,所以需要像下面这样获取列表

[0.5, 0.7, 0.8999999999999999]
list(zip(map(sum, zip(*values)), fruits))
如果要在不使用
zip
map
的情况下执行此操作,可以使用

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

当我在IDLE中使用zip函数时,我得到:
这很完美,我只需要研究一下。谢谢你的帮助@Derpy使用我在答案中包含的解释。@Derpy很高兴能提供帮助。如果你觉得我的回答对你有帮助,你可以:-)当然,我只需要等待计时器就可以了=)另外,出于好奇,有没有其他方法可以做到这一点,也许效率更低?理论上,我应该在不知道
map
zip
的情况下做这件事。。。