In case you want to be able to handle any list lengths (not just divisible by 4, and not just where the two lists have the same size) and any number of lists...
Any list lengths
This can handle any list lengths, including where the two lists have wildly different lengths:
result = []
it1, it2 = iter(List1), iter(List2)
while chunk := list(islice(it1, 4)) + list(islice(it2, 4)):
result += chunk
Slight alternative:
result = []
it1, it2 = iter(List1), iter(List2)
while chunk := list(chain(islice(it1, 4), islice(it2, 4))):
result += chunk
Demo:
>>> 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]
Any number of lists (of any lengths)
result = []
iters = deque(map(iter, Lists))
while iters:
it = iters.popleft()
if chunk := list(islice(it, 4)):
result += chunk
iters.append(it)
Demo (output formatted for clarity):
>>> 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]