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