Python—在列表中添加元组元素

Python—在列表中添加元组元素,python,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个元素和) 麻烦的是方括号 我被

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

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

您可以使用内置的
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

您可以使用内置的
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

如果你不喜欢函数式编程,我决定给出另一个答案

我们能做的就是把这个问题当作两个不同的问题来对待。对每个元组的第一个条目求和,对每个元组的第二个条目求和。然后将它们组合成一个元组。好吧,听起来还不错

让我们从一个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 in”循环,但是我们的变量本身就是一个名称元组,非常方便

寻找问题的答案

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

我们完成了。

如果你不喜欢函数式编程,我决定给出另一个答案

我们能做的就是把这个问题当作两个不同的问题来对待。对每个元组的第一个条目求和,对每个元组的第二个条目求和。然后将它们组合成一个元组。好吧,听起来还不错

让我们从一个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 in”循环,但是我们的变量本身就是一个名称元组,非常方便

寻找问题的答案

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

我们完成了。

你的问题有点让人困惑。您有一个元组列表。你想要它的总和在一个元组、列表还是一个包含一个元组的列表中?你的问题有点让人困惑。您有一个元组列表。您希望它的总和出现在一个元组、一个列表还是一个包含一个元组的列表中?这增加了扩展到更大元组的好处。如果结果必须按照指定的问题返回一个元组,则可以执行
tuple(map(sum,zip(*mylist))
这还可以扩展到更大的元组。如果结果必须返回指定问题的元组,可以执行
tuple(map(sum,zip(*mylist))