Python - 在列表中添加元组的元素

时间:2016-02-23 01:51:56

标签: python

如何在列表中添加元组的元素?

[(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()]

3 个答案:

答案 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)

我们已经完成了。