如何在列表中添加元组的元素?
[(0.50421782178217822, 0.4822060104027705), (0.4375, 0.6666666666666666), (0.375, 0.4642857142857143), (0.26666666666666666, 0.16666666666666666)]
例如:
=> 0.50421 ... + 0.4375 + ... => 0.4822 ... + 0.666 + ...
它应该返回一个元组。
例如,(第0个元素和,第1个元素和)。
令人烦恼的是方括号。
我被困在这里,但不知道如何添加元组。
[(x,y) for (x,y) in dict.itervalues()]
答案 0 :(得分:5)
{{1}}
答案 1 :(得分:1)
您可以使用内置的reduce
功能。
myList = [(0.50421782178217822, 0.4822060104027705), (0.4375, 0.6666666666666666), (0.375, 0.4642857142857143), (0.26666666666666666, 0.16666666666666666)]
reduce(lambda x,y: (x[0]+y[0], x[1]+y[1]), myList)
(1.5833844884488448, 1.779825058021818)
或者有两个聚合变量。
s1,s2 = 0.0, 0.0
for x,y in myList:
s1+=x
s2+=y
答案 2 :(得分:1)
如果函数式编程不是你的事,我决定给出另一个答案。
我们能做的就是将问题视为两个不同的问题。求和每个元组的第一个条目,并将每个元组中的第二个条目求和。然后将它们组合成一个元组。好吧,这听起来不太糟糕。
让我们从仅仅总结一个1元组的列表开始,这只是一个列表。总结很容易。
>>> aList = [1,2,3,4,5]
>>> theSum = sum(aList)
>>> print(theSum)
15
那太糟糕了,没有道理。
现在,如果我们有一个2元组的列表(或者那个n元组)并且只想要第一个条目的总和。好吧,我们总结时可以忽略其余的条目。
>>> aList = [(1,10),(2,10),(3,10),(4,10),(5,10)]
>>> theSum = sum([firstEntry for firstEntry,secondEntry in aList])
>>> print(theSum)
15
还不错。现在,如果想要更清楚一点,我们可以清理第二行。
>>> theSum = sum(firstEntry for firstEntry,_ in aList)
我所做的是从括号中取出并为未使用的方法添加下划线。这是读取代码的人可以看到很明显我们并不关心第二项。
现在发生了什么,我们正在做的是做一个定期的' for'循环,但我们的变量现在是一个名字元组本身,非常方便。
对于问题的答案
>>> aList = [(0.50421782178217822, 0.4822060104027705), (0.4375, 0.6666666666666666), (0.375, 0.4642857142857143), (0.26666666666666666, 0.16666666666666666)]
>>> theSum = (sum(firstEntry for firstEntry,_ in aList),sum(secondEntry for _,secondEntry in aList))
>>> print(theSum)
(1.5833844884488448, 1.779825058021818)
我们已经完成了。