python求和函数forloop

python求和函数forloop,python,sum,Python,Sum,我只是想知道。。如何对for循环中的不同元素求和 for element in [(2,7),(9,11)] : g=sum(element[1]-element[0]+1) print g 如果我删除“sum”,我会得到: 6 3 我不知道你想要什么。是这个吗 >>> print sum(element[1]-element[0]+1 for element in [(2,7), (9,11)]) 9 这相当于 temp = [] for

我只是想知道。。如何对for循环中的不同元素求和

for element in [(2,7),(9,11)] :
        g=sum(element[1]-element[0]+1)
        print g
如果我删除“sum”,我会得到:

6
3

我不知道你想要什么。是这个吗

>>> print sum(element[1]-element[0]+1 for element in [(2,7), (9,11)])
9
这相当于

temp = []
for element in [(2,7), (9,11)]:
    temp.append(element[1]-element[0]+1)
print sum(temp)

但它避免了在内存中构建列表,因此效率更高。

您可以用以下内容替换:

这可以简化为:

In [21]: sum(y - x + 1 for x,y in [(2, 7), (9, 11)])
Out[21]: 9

…我发现它更容易阅读,并保证列表中的每个元素正好有两个元素。而且它不使用不必要的lambda。

您可以使用lambda函数将列表映射到求和列表中,如下所示:

list_of_tuples = [(2,4),(5,7)]
list_of_sums = map(lambda x: x[0]+x[1], list_of_tuples)

做同样的事情还有很多其他方法,但是如果您从未使用过map或lambda函数,那么这是一个学习它们的好机会;)

这就是你所指的吗

g = 0
for element in [(2,7),(9,11)] :
         g= g + (element[1]-element[0]+1)
         print g 
sum
仅接受对象

更新

g = 0
for element in [(2,7),(9,11)] :
         g += (element[1]-element[0]+1)
print g # moved indention to show the sum
最简单的方法是:

sum(map(lambda (x,y): y-x+1 , [(2,7),(9,11)]))

你到底想得到什么?不太清楚。您想要元组中所有元素的总和吗?还是一个总和列表?@LinusSvendsson,嗯,谁正确地“猜到”了你的问题?我要所有元素的总和为-1-I+1。(11-9+1)+(7-2+1)=9在形式上?你是学者和通灵者!太好了。只是我,还是返回6 9而不是9?是的,但那是因为最后一行的缩进错误;-)
sum(map(lambda (x,y): y-x+1 , [(2,7),(9,11)]))
>>> sum(right-left+1 for left,right in [(2,7),(9,11)])
9