存储在元组内的元素总和

时间:2015-04-06 12:23:24

标签: python python-2.7

给定一个包含一堆整数元素的元组,如何找到所有元素的总和?

例如,如果我有一个元组列表:

li = [(1, 2), (1, 3), (2, 3)]

我怎样才能得到这样的东西:

[3, 4, 5]

其中3,4和5分别是三个元组中每个元组的总和?

6 个答案:

答案 0 :(得分:22)

您可以像这样使用mapsum功能

>>> li = [(1, 2), (1, 3), (2, 3)]
>>> map(sum, li)
[3, 4, 5]

或者您可以使用list comprehension,就像这样

>>> [sum(tup) for tup in li]
[3, 4, 5]

注意:我个人更喜欢列表推导版本,因为Python 3.x中的map函数将返回一个可迭代的map对象,需要将其显式转换为列表,如list(map(sum, li))

>>> li = [(1, 2), (1, 3), (2, 3)]
>>> map(sum, li)
<map object at 0x7f3dc25bb0f0>
>>> type(map(sum, li))
<class 'map'>
>>> list(map(sum, li))
[3, 4, 5]

但是list comprehension将在Python 2.x和Python 3.x中提供一个列表。

答案 1 :(得分:3)

您可以使用list comprehension

>>> li = [(1, 2), (1, 3), (2, 3)]
>>> [x+y for (x,y) in li]
[3, 4, 5]

答案 2 :(得分:2)

以下两种解决方案均适用。

li = [(1, 2), (1, 3), (2, 3)]
print([sum(i) for i in li])

def sumtupleinlist(lst):
    return [sum(i) for i in lst]
li = [(1, 2), (1, 3), (2, 3)]

要测试该功能,请运行:

print(sumtupleinlist(li))

答案 3 :(得分:1)

初学者:

  1. 创建类型为list的结果变量。
  2. 通过for循环迭代给定列表中的每个项目。
  3. 由于每个项目都是元组,所以再次从第2步迭代项目并将项目总和设置为0。
  4. 添加总和。
  5. 将和加到结果变量。
  6. 演示:

    >>> li = [(1, 2), (1, 3), (2, 3)]   # Given Input
    >>> result = []                     # Step 1
    >>> for i in li:                    # Step 2
    ...     tmp_sum = 0                 # Step 3  
    ...     for j in i:                 # Step 3
    ...         tmp_sum += j            # Step 4 
    ...     result.append(tmp_sum)      # Step 5 
    ... 
    >>> print result
    [3, 4, 5]
    

答案 4 :(得分:0)

ls= [(1,2), (3,4)]
finallist = []
for tuple in ls:
     listt = list(tuple)
     summ = 0
     for m in listt:
         summ+=m
     finallist.append(summ)
print(finallist) #[3,7]

答案 5 :(得分:0)

制作一个包含元组的列表 -

tup = [(1,2),(3,4),(5,6)]

for (a,b) in tup:
    print(a+b)

这会给你 -

3
7
11