给定一个数字列表,例如:

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

我如何计算它们的总和:

1 + 2 + 3 + 4 + 5 + ...

我如何计算他们的两两平均值:

[(1+2)/2, (2+3)/2, (3+4)/2, (4+5)/2, ...]

当前回答

n = int(input("Enter the length of array: "))
list1 = []
for i in range(n):
    list1.append(int(input("Enter numbers: ")))
print("User inputs are", list1)

list2 = []
for j in range(0, n-1):
    list2.append((list1[j]+list1[j+1])/2)
print("result = ", list2)

其他回答

使用简单的列表-理解和求和:

>> sum(i for i in range(x))/2. #if x = 10 the result will be 22.5

对一串数字求和:

sum(list_of_nums)

使用列表推导式生成一个新列表,其中相邻元素在xs中求平均值:

[(x + y) / 2 for x, y in zip(xs, xs[1:])]

将所有相邻元素求和为一个值:

sum((x + y) / 2 for x, y in zip(xs, xs[1:]))

这个问题在这里得到了解答

a = [1,2,3,4]
sum(a) 

sum(a)返回10

问题1:

要对一组数字求和,使用sum:

xs = [1, 2, 3, 4, 5]
print(sum(xs))

这个输出:

15

问题2:

所以你需要(元素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:])]

在Python 3.8中,可以使用新的赋值操作符

>>> my_list = [1, 2, 3, 4, 5]
>>> itr = iter(my_list)
>>> a = next(itr)
>>> [(a + (a:=x))/2 for x in itr]
[1.5, 2.5, 3.5, 4.5]

A是对列表中前一个值的运行引用,因此它被初始化为列表的第一个元素,迭代发生在列表的其余部分,在每次迭代中使用后更新A。

显式迭代器用于避免使用my_list[1:]创建列表的副本。