У меня есть проект, в котором я должен получить последующие элементы элементов в on_time
.
Например:
j_set = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
s_follow_int = [[2, 3], 4, [5, 6], [6, 8], [7, 8], 9, 8, 10, 10, 11]
on_time = [4, 5]
Код, который у меня есть, выглядит так:
# element in on_time except 1, get follow_finish_act
follow_finish_act = []
for a, d in zip(j_set, s_follow_int):
if a in on_time and a != 1:
if len(on_time) > 1:
follow_finish_act.append(d)
else:
follow_finish_act = d
Вывод, который я получаю:
follow_finish_act = [[6, 8], [7, 8]]
Ожидаемый результат:
follow_finish_act = [6, 7, 8]
У меня проблемы, когда длина on_time больше 1. Я думаю проблема в том, чтобы сгладить неправильные списки (могут быть вложенными и целочисленными) без дубликатов. Поскольку я не могу получить ожидаемый результат.
Любая помощь / предложения приветствуются! Спасибо!
Изменить: код, который я использовал для сглаживания вывода follow_finish_act
def flatten(lss):
for item in lss:
try:
yield from flatten(item)
except TypeError:
yield item