from random import randint
a = [randint(-100, 100) for i in range(15)]
print("ДО:", a)
def func(lst):
chain = False
result = []
cash = []
for elem in lst:
if elem > 0:
chain = True
cash.clear()
result.append(elem)
elif elem < 0:
if chain:
cash.append(elem)
else:
result.append(elem)
elif elem == 0:
result.extend(cash)
chain = False
result.append(elem)
result.extend(cash)
return result
print("ПОСЛЕ:", func(a))
from itertools import groupby
def one_or_zero(num):
return 1 if num > 0 else 0
head, *body, tail = [(num, list(group)) for num, group in groupby(data, key=one_or_zero)]
new_data_body = [i for num, group in body for i in group if num or len(group) == 1]
new_data = head[-1] + new_data_body + tail[-1]
# data -> [-53, -27, 89, -83, -39, 78, -45, 37, -10, -96, 83, 79, -84, -40, 63, -8, -8]
# new_data -> [-53, -27, 89, 78, -45, 37, 83, 79, 63, -8, -8]
# data -> [89, -83, -39, 78, -45, 37, -10, -96, 83, 79, -84, -40, 63, -8, -9]
# new_data -> [89, 78, -45, 37, 83, 79, 63, -8, -9]