Your confusing pointers with references.
x=0
variables = [x, y] this will not matter since its going to get reassigned
variables[0] = data[0] so variables[0] == ['2,3,4]
at 3 you are thinking you have a reference to x. But you do not! You only the have the reference to variables[0]
Maybe your thinking of something like this:
x = [1]
var = [x]
var[0][0] = 2
print var, x
>>> [[2]] [2]
This will actually change the value of x. Lists and dictionaries will change (as in mutatable) while strings and numbers will not. Thre is no way to get a reference to them to change the underlying value.