Вдохновленный ответом @zipa:
l_doc_page = [(k,p+1) for i, j in zip(l_name, l_depth) for p,k in enumerate([i]*j)]
Это даст вам:
[('Doc_1', 1), ('Doc_2', 1), ('Doc_2', 2), ('Doc_2', 3), ('Doc_3', 1), ('Doc_3', 2)]
Вы можете использовать l_doc_page
напрямую, если вы планировали объединять списки во время итерации:
for doc, page in l_doc_page: do_sth(doc, page)
или вы можете разархивировать и распаковать списки:
l_doc, l_page = zip(*l_doc_page)
, и тогда вы получите результат, необходимый для вопроса:
>>> l_doc, l_page=zip(*((k,p+1) for i, j in zip(l_name, l_depth) for p,k in enumerate([i]*j)))
>>> l_doc
('Doc_1', 'Doc_2', 'Doc_2', 'Doc_2', 'Doc_3', 'Doc_3')
>>> l_page
(1, 1, 2, 3, 1, 2)