我有一个数字列表,比如[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只为了得到一个号码?
这对我不起作用。
发布于 2010-12-06 10:07:01
问题1:所以你想要(元素0+元素1) / 2,(元素1+元素2) / 2,...等。
我们创建了两个列表:一个是除第一个元素之外的每个元素的列表,另一个是除最后一个元素之外的每个元素的列表。然后我们想要的平均值是从两个列表中获得的每对的平均值。我们使用zip从两个列表中获取对。
我假设您希望在结果中看到小数,即使您的输入值是整数。默认情况下,Python执行整数除法:它丢弃余数。为了把所有的东西都除以,我们需要使用浮点数。幸运的是,整数除以浮点数将产生浮点数,因此我们只使用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)运行得很好。
你必须更具体地说明你写了什么,以及它是如何不起作用的。
发布于 2010-12-06 10:04:34
数字总和列表:
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) + ...使用reduce和lambdas
reduce(lambda x, y: (x + y) / 2, list_of_nums)发布于 2016-07-12 20:19:15
问题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)https://stackoverflow.com/questions/4362586
复制相似问题