Свести список 1 в соответствие со списком 2 очень просто - либо просто используйте itertools.chain.from_iterable(list))
, либо flat1 = [elem for sublist in list1 for elem in sublist]
, либо различные другие опции в этом вопросе .
Другой путь - этонемного сложнее.Но вместо того, чтобы искать однострочник, давайте просто сделаем это явно: создайте итератор для list2
и извлекайте из него элементы по мере необходимости:
def zipstructured(list1, list2):
iter2 = iter(list2)
for sublist1 in list1:
sublist2 = list(itertools.islice(iter2, len(sublist1)))
yield sublist1, sublist2
Теперь вы можете просто сделать это:
>>> list1=[[2,3,4],[1],[77,8,27,12],[25,15]]
>>> list2=['a','b','c','d','e','f','g','h','i','j']
>>> for sub1, sub2 in zipstructured(list1, list2):
... print(sub1, sub2)
[2, 3, 4] ['a', 'b', 'c']
[1] ['d']
[77, 8, 27, 12] ['e', 'f', 'g', 'h']
[25, 15] ['i', 'j']