В случае, если вы хотите иметь возможность обрабатывать любой длины списка (не только делится на 4, а не только когда два списка имеют одинаковый размер) и любое количество списков ...
Любые длины списков
Это может обрабатывать любые длины списков, включая случаи, когда два списка имеют совершенно разные длины:
result = []
it1, it2 = iter(List1), iter(List2)
while chunk := list(islice(it1, 4)) + list(islice(it2, 4)):
result += chunk
Небольшая альтернатива:
result = []
it1, it2 = iter(List1), iter(List2)
while chunk := list(chain(islice(it1, 4), islice(it2, 4))):
result += chunk
Демонстрация:
>>> from itertools import islice
>>> List1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
>>> List2 = ['a', 'b', 'c', 'd', 'e']
>>> k = 4
>>> result = []
>>> it1, it2 = iter(List1), iter(List2)
>>> while chunk := list(islice(it1, k)) + list(islice(it2, k)):
result += chunk
>>> result
[1, 2, 3, 4, 'a', 'b', 'c', 'd', 5, 6, 7, 8, 'e', 9, 10, 11, 12, 13, 14]
Любое количество списков (любой длины)
result = []
iters = deque(map(iter, Lists))
while iters:
it = iters.popleft()
if chunk := list(islice(it, 4)):
result += chunk
iters.append(it)
Демонстрация (выходные данные отформатированы для наглядности):
>>> from itertools import islice
>>> from collections import deque
>>> Lists = [
[1.1, 1.1, 1.1, 1.1, 1.2, 1.2, 1.2, 1.2],
[2.1, 2.1, 2.1, 2.1, 2.2, 2.2, 2.2, 2.2, 2.3],
[3.1, 3.1, 3.1, 3.1, 3.2, 3.2, 3.2, 3.2, 3.3, 3.4]
]
>>> k = 4
>>> result = []
>>> iters = deque(map(iter, Lists))
>>> while iters:
it = iters.popleft()
if chunk := list(islice(it, 4)):
result += chunk
iters.append(it)
>>> result
[1.1, 1.1, 1.1, 1.1, 2.1, 2.1, 2.1, 2.1, 3.1, 3.1, 3.1, 3.1,
1.2, 1.2, 1.2, 1.2, 2.2, 2.2, 2.2, 2.2, 3.2, 3.2, 3.2, 3.2,
2.3, 3.3, 3.4]