给定一个包含一堆整数元素的元组,如何找到所有元素的总和?
例如,如果我有一个元组列表:
li = [(1, 2), (1, 3), (2, 3)]
我怎样才能得到这样的东西:
[3, 4, 5]
其中3,4和5分别是三个元组中每个元组的总和?
答案 0 :(得分:22)
>>> 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)
初学者:
for
循环迭代给定列表中的每个项目。演示:
>>> 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