python求和函数forloop
我只是想知道。。如何对for循环中的不同元素求和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 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