用Python对数字列表求和

2024-04-19 00:09:02 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

另外,我怎样才能对一个数字列表求和呢?

a = [1, 2, 3, 4, 5, ...]

是不是:

b = sum(a)
print b

要一个号码?

这对我不起作用。


Tags: 列表数字号码sumprint
3条回答

问题2: 要对整数列表求和:

a = [2, 3, 5, 8]
sum(a)
# 18
# or you can do:
sum(i for i in a)
# 18

如果列表包含整数作为字符串:

a = ['5', '6']
# import Decimal: from decimal import Decimal
sum(Decimal(i) for i in a)

问题1:所以您需要(元素0+元素1)/2,(元素1+元素2)/2。。。等等

我们列出两个列表:除第一个元素外的每个元素中的一个,除最后一个元素外的每个元素中的一个。那么我们想要的平均值是从两个列表中取出来的每对的平均值。我们使用zip从两个列表中获取对。

我假设您希望在结果中看到小数,即使您的输入值是整数。默认情况下,Python执行整数除法:丢弃剩余部分。要把事情一分为二,我们需要使用浮点数。幸运的是,用一个浮点数除以一个int将产生一个浮点数,所以我们只使用2.0作为除数,而不是2

因此:

averages = [(x + y) / 2.0 for (x, y) in zip(my_list[:-1], my_list[1:])]

问题2:

使用sum应该效果不错。以下工作:

a = range(10)
# [0,1,2,3,4,5,6,7,8,9]
b = sum(a)
print b
# Prints 45

此外,您不需要在过程中的每一步都将所有内容赋给变量。print sum(a)工作得很好。

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

数字和列表:

sum(list_of_nums)

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

[(x + (x - 1)) / 2 for x in list_of_nums]

对相邻元素求和,例如((1+2)/2+((2+3)/2)+。。。使用reducelambdas

reduce(lambda x, y: (x + y) / 2, list_of_nums)

相关问题 更多 >