> p[j] does not give you a reference to an element inside p. It gives > you a new sublist containing one element from p. You then append a > column to that sublist. Then, since you do nothing more with that > sublist, YOU THROW IT AWAY.
Not correct. p = [[]] p[0].append(1) print p yields [[1]] p[0] _gives_ you a reference to an object. If it is mutable (list are) and append mutates it (it does), the code is perfectly alright. I don't know what is "not working" for the OP, but actually his code works if one replaces the csv-reading with a generated list: cnt = 0 p=[[], [], [], [], [], [], [], [], [], [], []] reader = [["column_%i" % c for c in xrange(5)] for l in xrange(7)] for line in reader: if cnt > 6: break j = 0 for col in line: p[j].append(col) j=j+1 cnt = cnt + 1 print p You are right of course that it is the most unpythonic way imaginabe to do it. But it works. Diez -- http://mail.python.org/mailman/listinfo/python-list