Поскольку ваш заданный список B
отсортирован, вы можете использовать:
B = [0.6, 1.7, 3, 4.5]
A = [0.6, 0.9, 1.2, 1.5, 2, 2.5, 3, 4, 4.5]
def first_greater_elem(lst, elem):
for item in lst:
if item >= elem:
return item
Тогда просто используйте понимание списка .
C = [first_greater_elem(B,item) for item in A ]
Output
[0.6, 1.7, 1.7, 1.7, 3, 3, 3, 4.5, 4.5]
Другим подходом может быть использование метода bisect_left
из пакета bisect
.
C = [B[bisect_left(B,item)] for item in A ]
Вывод
[0.6, 1.7, 1.7, 1.7, 3, 3, 3, 4.5, 4.5]