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))
如果你想在没有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