I've been trying to learn some Python for just under two weeks now. So, sorry if I'm just completely misinformed. 

I've been searching for about five days as I've been learning the language for the answer to this question, and the wording is difficult for me to articulate, so if I missed it please feel free to mark this as duplicate and point me in the right direction. 

Let's say I have `list1 = [[x, y], [a, b]]` and `list2 = [0, 1]`. 

I want `list3 = [[x, y, 0], [x, y, 1], [a, b, 0], [a, b, 1]]`

In my research here on StackOverflow and experimenting on my own I've found ways to get all sorts of similar results like: 

`[[x, y, 0], [a, b, 1]]`

`[[x, y, 0, 1], [a, b, 0, 1]]`

`[[x, y, 0, 1], [a, b]]`

`[[[x, y], 0], [[x, y], 1], [[a, b], 0], [[a, b], 1]]`

The thing that I've been considering would be to do something like the following: 

1. Create as many iterations of the sublists in list1 are there are
elements in list2 
`[[x, y], [a, b]] -> [[x, y], [x, y], [a, b], [a, b]]`
2. Flatten list1 so that it's no longer sublists, but repeating
elements `[[x, y], [x, y], [a, b], [a, b]] -> [x, y, x, y, a, b, a, b]`
3. Go through the elements of list1 and insert the elements of
list2 along the flattened list `[x, y, x, y, a, b, a, b] -> [x, y, 0, x, y, 1, a, b, 0, a, b, 1]`
4. Group the elements into the
appropriate size: 
`[x, y, 0, x, y, 1, a, b, 0, a, b, 1] -> [[x, y, 0], [x, y, 1], [a, b, 0], [a, b, 1]]`

If that's what I have to do, then that's what I have to do, and I am looking for a way to do it that way, but I feel like there must be some sort of more-Pythonic way of doing this operation (then again, what do I know?) and, if so, I'm struggling to find out what it could be.