在Python中,如何每5个元素减去两个列表?

在Python中,如何每5个元素减去两个列表?,python,Python,我有两张单子 A=[3.8749.6334444641317,7.8,10.6,7.4] B=[1.0500.45288168429073,3.0,16.0,4.0,6.0,1107.40562842779,8.0,6.0,5.0,0.0,109.73034003937472,12.0,5.0,10.0,0.057.73923699552466,8.0,9.0,4.0,2.0,4.392471139845,2.0,14.0,3.0] 如何在B中每5个元素减去B-A, 结果支持十进制数 e、 g

我有两张单子

A=[3.8749.6334444641317,7.8,10.6,7.4]

B=[1.0500.45288168429073,3.0,16.0,4.0,6.0,1107.40562842779,8.0,6.0,5.0,0.0,109.73034003937472,12.0,5.0,10.0,0.057.73923699552466,8.0,9.0,4.0,2.0,4.392471139845,2.0,14.0,3.0]

如何在B中每5个元素减去B-A, 结果支持十进制数

e、 g


然后重复您可以将
zip
与列表切片一起使用:

C = [y-x for x,y in zip(A,B[::5])]
print(C)
您可以使用重复A,然后用B将其压缩

from itertools import cycle

A = [3.8, 749.6334444641317, 7.8, 10.6, 7.4]
B = [1.0, 500.45288168429073, 3.0, 16.0, 4.0, 6.0, 1107.40562842779, 8.0, 6.0, 5.0, 0.0, 109.73034003937472, 12.0, 5.0, 10.0, 0.0, 457.73923699552466, 8.0, 9.0, 4.0, 2.0, 4.392471135139845, 2.0, 14.0, 3.0]

[a - b for a, b in zip(cycle(A), B)]
结果如下:

[2.8,                 # 3.8 - 1.0
 249.18056277984095,  # 749.6334444641317 - 500.45288168429073
 4.8,                 #  ...
 -5.4,
 ... 
 -3.4,                # 10.6 - 14.0
 4.4]                 # 7.4 - 3

编辑

根据问题的变化,您可以简单地交换a和b:

[b - a for a, b in zip(cycle(A), B)]

到目前为止,你尝试了什么?不清楚你所说的“每五种元素”是什么意思。A只有五个元素——你是指两个列表的每五个元素,还是指B的每五个元素?一旦减法完成,结果应该是什么?你想用减法的结果来更新B中的元素吗?对于B中的每五个元素,结果要么在B中更新,要么在一个新的列表中。你的例子更令人困惑。首先,它们是
A-B
,而不是问题中所述的
B-A
。第二,你所说的“每五个元素”的含义就更不清楚了。短语“每五个元素”通常意味着跳过前四个元素,选择第五个元素,跳过下四个元素,选择第十个元素,依此类推。这些例子并没有遗漏任何东西。对于这些混乱,我深表歉意,希望能编辑一下,以显示出更清晰的内容
[b - a for a, b in zip(cycle(A), B)]