Я бы сжал список с собой и возвратил бы вторую часть кортежа, когда первая часть находится в b
:
a = [200.04, 300.87, 400.19, 500.67, 600.86, 700.19, 800.48]
b = [200.04, 600.86]
[n for m, n in zip(a, a[1:]) if m in b]
# [300.87, 700.19]
Это потенциально неэффективно, если b
большой, но обрабатывает хорошие случаи - например, различные заказы или последний элемент из a
, являющийся частью b
.