Обычно когда мы имеем дело с множеством списков разной длинны и нужно выбрать из каждого по индексу то zip_longest из itertools решает проблему. Способов применения может быть много, простейший выглядит вот так
from itertools import zip_longest
x = [1, 2, 3, 4, 5, 6, 7]
y = [8, 9, 10]
z = [9, 3, 4, 5]
list(zip_longest(x,y,z))
Ну а там в зависимости от того как эти списки получаются и что на выходе можно по разному реализовать. zip_longrst имеет параметр fillvalue, чем заполнять по умолчанию None. Ну и надо помнить про распаковку, то есть если все эти списки собраны ну например в какой то один список то можно использовать так.
data = [x,y,z]
list(zip_longest(*data))