首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python中对一列数字求和

问在Python中对一列数字求和
EN

Stack Overflow用户
提问于 2010-12-06 10:01:23
回答 26查看 1.9M关注 0票数 412

我有一个数字列表,比如[1,2,3,4,5...],我想计算(1+2)/2,对于第二个数字,计算(2+3)/2,对于第三个数字,计算(3+4)/2,依此类推。我该怎么做呢?

我想把第一个数与第二个数相加,然后除以2,然后将第二个数与第三个数相加,再除以2,以此类推。

另外,我如何对一列数字求和?

代码语言:javascript
复制
a = [1, 2, 3, 4, 5, ...]

是不是:

代码语言:javascript
复制
b = sum(a)
print b

只为了得到一个号码?

这对我不起作用。

EN

回答 26

Stack Overflow用户

发布于 2010-12-06 10:07:01

问题1:所以你想要(元素0+元素1) / 2,(元素1+元素2) / 2,...等。

我们创建了两个列表:一个是除第一个元素之外的每个元素的列表,另一个是除最后一个元素之外的每个元素的列表。然后我们想要的平均值是从两个列表中获得的每对的平均值。我们使用zip从两个列表中获取对。

我假设您希望在结果中看到小数,即使您的输入值是整数。默认情况下,Python执行整数除法:它丢弃余数。为了把所有的东西都除以,我们需要使用浮点数。幸运的是,整数除以浮点数将产生浮点数,因此我们只使用2.0而不是2作为除数。

因此:

代码语言:javascript
复制
averages = [(x + y) / 2.0 for (x, y) in zip(my_list[:-1], my_list[1:])]

问题2:

使用sum应该可以很好地工作。以下是工作原理:

代码语言:javascript
复制
a = range(10)
# [0,1,2,3,4,5,6,7,8,9]
b = sum(a)
print b
# Prints 45

而且,您不需要在整个过程中的每一步都将所有内容赋给一个变量。print sum(a)运行得很好。

你必须更具体地说明你写了什么,以及它是如何不起作用的。

票数 312
EN

Stack Overflow用户

发布于 2010-12-06 10:04:34

数字总和列表:

代码语言:javascript
复制
sum(list_of_nums)

使用list comprehension计算n和n-1的一半(如果模式正确的话)

代码语言:javascript
复制
[(x + (x - 1)) / 2 for x in list_of_nums]

对相邻元素求和,例如((1 + 2) / 2) + ((2 + 3) / 2) + ...使用reduce和lambdas

代码语言:javascript
复制
reduce(lambda x, y: (x + y) / 2, list_of_nums)
票数 134
EN

Stack Overflow用户

发布于 2016-07-12 20:19:15

问题2:求和整数列表的:

代码语言:javascript
复制
a = [2, 3, 5, 8]
sum(a)
# 18
# or you can do:
sum(i for i in a)
# 18

如果列表包含字符串形式的整数:

代码语言:javascript
复制
a = ['5', '6']
# import Decimal: from decimal import Decimal
sum(Decimal(i) for i in a)
票数 77
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4362586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档