我只是想知道..如何在for循环中总结不同的元素?
for element in [(2,7),(9,11)] :
g=sum(element[1]-element[0]+1)
print g
如果我删除' sum',我得到:
6
3
答案 0 :(得分:11)
我不确定你想要得到什么。是这个吗?
>>> 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)
但它避免在内存中构建列表,因此效率更高。
答案 1 :(得分:3)
您可以将其替换为generator expression:
In [20]: sum(element[1] - element[0] + 1 for element in [(2, 7), (9, 11)])
Out[20]: 9
这可以简化为:
In [21]: sum(y - x + 1 for x,y in [(2, 7), (9, 11)])
Out[21]: 9
...我觉得更容易阅读,并保证列表中的每个元素都有两个元素。并且它不使用不必要的lambdas。
答案 2 :(得分:2)
>>> sum(right-left+1 for left,right in [(2,7),(9,11)])
9
答案 3 :(得分:1)
您可以使用lambda函数将列表映射到总和列表中,如下所示:
list_of_tuples = [(2,4),(5,7)]
list_of_sums = map(lambda x: x[0]+x[1], list_of_tuples)
还有许多其他方法可以做同样的事情,但如果你从未使用过map或lambda函数,那么这是学习它们的好机会;)
答案 4 :(得分:1)
最简单的方法:
sum(map(lambda (x,y): y-x+1 , [(2,7),(9,11)]))
答案 5 :(得分:0)
这是你所指的吗?
g = 0
for element in [(2,7),(9,11)] :
g= g + (element[1]-element[0]+1)
print g
sum
仅接受iterable
对象
<强>更新强>
g = 0
for element in [(2,7),(9,11)] :
g += (element[1]-element[0]+1)
print g # moved indention to show the sum