且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

在 Python 中对数字列表求和

更新时间:2023-02-05 12:44:59

问题 1:所以你想要 (element 0 + element 1)/2, (element 1 + element 2)/2, ... etc.

Question 1: So you want (element 0 + element 1) / 2, (element 1 + element 2) / 2, ... etc.

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

We make two lists: one of every element except the first, and one of every element except the last. Then the averages we want are the averages of each pair taken from the two lists. We use zip to take pairs from two lists.

我假设您希望在结果中看到小数,即使您的输入值是整数.默认情况下,Python 进行整数除法:它丢弃余数.为了彻底划分事物,我们需要使用浮点数.幸运的是,一个 int 除以一个浮点数会产生一个浮点数,所以我们只使用 2.0 作为我们的除数而不是 2.

I assume you want to see decimals in the result, even though your input values are integers. By default, Python does integer division: it discards the remainder. To divide things through all the way, we need to use floating-point numbers. Fortunately, dividing an int by a float will produce a float, so we just use 2.0 for our divisor instead of 2.

因此:

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

问题 2:

sum 的使用应该可以正常工作.以下工作:

That use of sum should work fine. The following works:

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

此外,您不需要在整个过程中的每一步都将所有内容分配给变量.print sum(a) 工作正常.

Also, you don't need to assign everything to a variable at every step along the way. print sum(a) works just fine.

您必须更具体地说明您所写的内容以及它是如何工作的.

You will have to be more specific about exactly what you wrote and how it isn't working.