如果另一个列表中元素的差小于某个值,如何对一个列表中的元素求和

问题描述 投票:-1回答:1

鉴于两个列表的大小相同。我想首先计算一个列表中连续元素之间的差异,然后如果差异满足条件,则求和第二个列表中的相应元素。

例如:

List_1 = [0.1, 0.2, 0.3, 0.5, 0.6, 0.9]
List_2 = [1, 1, 1, 1, 1, 1]

如果List_2中连续元素之间的差小于或等于0.1,我想对List_1中的相应元素求和。如果差异大于0.1,则什么也不做。在这种情况下,List_1的差为[0.1, 0.1, 0.2, 0.1, 0.3],则我期望的总和清单为[ 3, 2, 1]

python list sum difference
1个回答
0
投票

以下代码本质上使用slicing和Python的内置函数zipzip循环提供合适的可迭代项。我试图向for添加一些说明性调用以显示正在发生的事情:

print

将打印:

# Your list input
X = [0.1, 0.2, 0.3, 0.5, 0.6, 0.9]
Y = [1, 2, 4, 8, 16, 32]

# Calculate sums
Z = [Y[0]]
for x_1, x_2, y in zip(X, X[1:], Y[1:]):
    print(f"Z currently looks like this: {Z}")
    print(f"Is {x_1} to {x_2} leq 0.1? {x_2 - x_1 <= 0.1}", end=" ")
    if x_2 - x_1 <= 0.1:
        print(f"=> Add {y} to last sum in Z")
        Z[-1] += y
    else:
        print(f"=> Use {y} to start a new sum in Z")
        Z += [y]

print("Final result:", Z)

当然,您只需删除对Z currently looks like this: [1] Is 0.1 to 0.2 leq 0.1? True => Add 2 to last sum in Z Z currently looks like this: [3] Is 0.2 to 0.3 leq 0.1? True => Add 4 to last sum in Z Z currently looks like this: [7] Is 0.3 to 0.5 leq 0.1? False => Use 8 to start a new sum in Z Z currently looks like this: [7, 8] Is 0.5 to 0.6 leq 0.1? True => Add 16 to last sum in Z Z currently looks like this: [7, 24] Is 0.6 to 0.9 leq 0.1? False => Use 32 to start a new sum in Z Final result: [7, 24, 32] 的所有调用,该代码仍然可以使用。

© www.soinside.com 2019 - 2024. All rights reserved.