Одним из возможных решений (для небольших наборов данных) является поиск минимального значения всех значений в Max's
, превышающих каждое значение в Closes
:
closes = [1, 2, 3, 4, 5, 4, 3, 2, 1]
maxs = [3, 5, 6, 7, 2]
nextbig = [min([m for m in maxs if m > c]) for c in closes]
print(nextbig)
Вывод:
[2, 3, 5, 5, 6, 5, 5, 3, 2]
Более эффективной альтернативой будет вложенный l oop с использованием отсортированного списка Max's
:
closes = [1, 2, 3, 4, 5, 4, 3, 2, 1]
maxs = [3, 5, 6, 7, 2]
nextbig = [c for c in closes]
maxs.sort()
for m in maxs:
for i, c in enumerate(closes):
if m > c and nextbig[i] == c:
nextbig[i] = m
print(nextbig)
Вывод:
[2, 3, 5, 5, 6, 5, 5, 3, 2]