List Manipulation

Diez B. Roggisch deets at nospam.web.de
Tue Jul 4 11:10:28 EDT 2006


> 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



More information about the Python-list mailing list