рекомбинировать список после блокировки его частей в том же порядке - PullRequest
0 голосов
/ 06 марта 2020

У меня есть список

lst1 = [1,8,3,2,5,7,9,10,11]

У меня есть функция, которая производит вывод

lst2 = [[1,8],[2,5],[10,11]]

Я хочу рекомбинировать список - сохраняя все в том же порядке, что и первый список

desired_output = [[1,8],[3],[2,5],[7],[9],[10,11]]

Мой код почти не читается, поэтому я его не включаю. Также выдает ошибки.

1 Ответ

2 голосов
/ 06 марта 2020

Для каждой группы в lst2 посмотрите, соответствует ли она началу lst1. Если это так, добавьте его в список out и удалите начало lst1. В противном случае вставьте первый элемент lst1 в список out и попробуйте снова.

out = []
for group in lst2:
    n = len(group)
    while True:
        if lst1[:n] == group:
            out.append(group)
            del lst1[:n]
            break
        else:
            out.append([lst1.pop(0)])

print(out)  # -> [[1, 8], [3], [2, 5], [7], [9], [10, 11]]

Ps Так как вы упомянули в комментариях, что lst2 должен быть в указанном формате c, но это не так Сказать, что это за формат, я не удосужился подумать обо всех возможных входах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...