I have a flat list `message` and i have a matrix where each row contains only one element

```
final = [['K'], ['E'], ['Y']]
message = ['F', 'F', 'F', 'C', 'F', 'D', 'C', 'C', 'F', 'D', 'C', 'C', 
           'B', 'F', 'F', 'F', 'B', 'B', 'C', 'C', 'F', 'F', 'A', 'A']

```

I want to assign every 2 letter pair from message to a single letter of final, but i want to itterate over message two letters at a time, and loop over final.

so i would get something like 

```
final = [[K, F, F, C, C, B, F, C, C],
         [E, F, C, F, D, F, F, F, F],
         [Y, F, D, C, C, B, B, A, A]]

```

notice the looping effect, i need to take two elements from `message` and assign them to one of the elements of `final` after 6 element i would then go back to K and start assigning them 'looping' over `final` 

after looking arround and speaking to some people in the chat i have got

`code = [[i] + list(y) for i, y in zip_longest(key, zip(*[iter(mes)] * 2),fillvalue='-')]`

however i get the wrong results i instead of filling the missing values with `-` i want to loop back over the original final matrix.

---

I get:

`[['M', 'F', 'F'], ['A', 'F', 'C'], ['R', 'F', 'D'], ['K', 'C', 'C'], ['-', 'F', 'D'], ['-', 'C', 'C'], ['-', 'B', 'F'], ['-', 'F', 'F'], ['-', 'B', 'B'], ['-', 'C', 'C'], ['-', 'F', 'F']]`

---

using cycle:

`[[i] + list(y) for i, y in zip(cycle(key), zip(*[iter(mes)] * 2))]`

results in:

`[['M', 'F', 'F'], ['A', 'C', 'C'], ['R', 'B', 'C'], ['K', 'D', 'E'], ['M', 'B', 'C'], ['A', 'D', 'E'], ['R', 'C', 'A'], ['K', 'E', 'D'], ['M', 'D', 'E'], ['A', 'F', 'F'], ['R', 'D', 'C'], ['K', 'F', 'F'], ['M', 'E', 'B'], ['A', 'D', 'E'], ['R', 'F', 'F']]`

which is close but i just want the letters to be appended rather than repeating the letters of MARK