I am trying to make a function to interleave a binary list into an array. The matrix size is 10 rows x 9 columns, initialized to None
. The bits are fed into the matrix one at a time, with the first input bit being fed into (0,0). The bits are fed into (previous row + 7) mod 10, and when the column is full, the column is moved to the right, and the column 0 is filled with the next set of bits.
However, I am running into a problem with the column fill loop. Every row in column zero is being set to the same value!
Here is what I have so far:
>>> row = 0
>>> interleave_row = [None,None,None,None,None,None,None,None,None]
>>> interleave_matrix = [interleave_row,interleave_row,interleave_row,interleave_row,interleave_row,interleave_row,interleave_row,interleave_row,interleave_row,interleave_row]
This yields a matrix that looks like:
[None, None, None, None, None, None, None, None, None],
[None, None, None, None, None, None, None, None, None],
[None, None, None, None, None, None, None, None, None],
[None, None, None, None, None, None, None, None, None],
[None, None, None, None, None, None, None, None, None],
[None, None, None, None, None, None, None, None, None],
[None, None, None, None, None, None, None, None, None],
[None, None, None, None, None, None, None, None, None],
[None, None, None, None, None, None, None, None, None]]
>>> input = [0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0]
>>> for i in range(0,10):
interleave_matrix[row][0] = input[i]
row = (row+7)%10
This yields:
[1, None, None, None, None, None, None, None, None],
[1, None, None, None, None, None, None, None, None],
[1, None, None, None, None, None, None, None, None],
[1, None, None, None, None, None, None, None, None],
[1, None, None, None, None, None, None, None, None],
[1, None, None, None, None, None, None, None, None],
[1, None, None, None, None, None, None, None, None],
[1, None, None, None, None, None, None, None, None],
[1, None, None, None, None, None, None, None, None]]
It should look like this:
[0, None, None, None, None, None, None, None, None],
[1, None, None, None, None, None, None, None, None],
[0, None, None, None, None, None, None, None, None],
[0, None, None, None, None, None, None, None, None],
[0, None, None, None, None, None, None, None, None],
[0, None, None, None, None, None, None, None, None],
[1, None, None, None, None, None, None, None, None],
[1, None, None, None, None, None, None, None, None],
[1, None, None, None, None, None, None, None, None]]
Am I having a noob moment? I know the row increment is working fine, as I've looped it by itself. What could be causing such weird behaviour?
EDIT: I just tried looping through the first four bits (guaranteed to end on a 0 bit), and it's not setting the entire row to the bit, it's just setting the entire row to 1. It's getting more and more strange...