Skip to content Skip to sidebar Skip to footer

Python List Of Lists- Access To Individual Elements

I am trying to access a particular element of a list of lists in Python. I am bringing a bit of C/Java baggage and thinking of this data structure as a 2D array. In my mind, the op

Solution 1:

I've had this happen before and it's frustrating.

Your problem is this line of code, which isn't doing what you think it is:

loc1 = [[0.0] * ncols] * nrows

[0.0] * ncols creates a single list which is passed by reference to form your 2D list.

Try this:

loc1 = [[0.0for y in range(ncols)] for x in range(nrows)]

Solution 2:

[x]*n produces a list that contains the exact same x element n times.

L = [0.0] * ncols works because 0.0 is a float and floats are immutable in Python therefore L[0] += 1.1 doesn't change 0.0 but places 1.1 in its place.

Lists are mutable therefore when you change any row in L = [[0]*ncol]*nrow you change all of them because it is the same object.

To fix it you could:

L = [[0.0]*ncols for _ in xrange(nrows)]

It creates a new list for each row so you can change them independently.

Or:

from itertools importrepeatL= [[0.0]*ncols for _ in repeat(None, nrows)]

Whatever is more readable for you.

Post a Comment for "Python List Of Lists- Access To Individual Elements"