在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)]