""" Don't use m * [n * [0]] to create an array. Details follow.

Two objects are the same if and only if they have the same id number. in the first example, x and y are different objects with the same value [0]. The is operator compares the ids. """

watchall('x = y = [0]')
print

# In this example, x and y are different objects.

watchall('x = [0]; y = [0]')
print

# The "is" operator compares id numbers.
x = y = 1
print x is y
x = [0]; y = [0]
print x is y
print

# In Python, it is tempting to write "arr = 3 * [4 * [0]]" to create a 3 by
# 4 array. But every newbie soon learns not to do this but instead to write
# a loop.

x = 2 * [3 * [0]]
print x
x[0][0] = 1
print x
print

# I use the following which completely avoids the "*" construction.

arr = []
for col in range(2):
    row = []
    for r in range(3):
        row.append(0)
    arr.append(row)
print arr
arr[0][0] = 1
print arr