SLesslyTall SLesslyTall - 1 month ago 8
Python Question

Python - Create constant array of unique elements

I recently tried to instantiate a 4x4 constant (0's) array by using

a = [[0] * 4] * 4


which instantiates the array
a
as

[[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0]]


However, this does not create an array of unique elements as altering an element in any of the arrays changes all of them, e.g.:

a[0][0] = 1


alters
a
to

[[1, 0, 0, 0],
[1, 0, 0, 0],
[1, 0, 0, 0],
[1, 0, 0, 0]]


I think I understand why this happens (copies of lists copy the list's pointer and do not create separate copies unless specified, unlike int's, etc.) but am left wondering:

Is there any quick and easy way to instantiate a constant array (without using any external modules, such as NumPy) with unique elements that can later be altered by simple
a[i][j] = x
addressing?

Answer Source
a = [[0 for _ in xrange(4)] for _ in xrange(4)]

should do it, it'll create separate lists