A lot of the comments focused on the subject line, the difference between list and numpy array.  But the example is all about the display of a numpy array.
Your example:
In [272]: x = np.array(([1,2,2], [1,4,3], [1,2,9]))
     ...: x = np.full(x.shape, 10)
In [273]: x
Out[273]: 
array([[10, 10, 10],
       [10, 10, 10],
       [10, 10, 10]])
In [274]: print(x)
[[10 10 10]
 [10 10 10]
 [10 10 10]]
That print is the str display of an array.  Note the missing commas.  The repr display includes the commas and word 'array'
In [275]: print(repr(x))
array([[10, 10, 10],
       [10, 10, 10],
       [10, 10, 10]])
The display of a list:
In [276]: x.tolist()
Out[276]: [[10, 10, 10], [10, 10, 10], [10, 10, 10]]
The 'duplicate' that focuses on list versus array:
Python: Differences between lists and numpy array of objects
Some examples from the comments:
In [277]: np.array()
Traceback (most recent call last):
  File "<ipython-input-277-e4f3b47dc252>", line 1, in <module>
    np.array()
TypeError: array() missing required argument 'object' (pos 1)
Making a 2d array without any elements:
In [278]: np.array([[]])
Out[278]: array([], shape=(1, 0), dtype=float64)
Making a 0d array with 1 element:
In [279]: np.array(34)
Out[279]: array(34)
In [280]: np.array(34).shape
Out[280]: ()
Arrays can a wide range of dimensions and shape, from 0d up (max 32).  Depending on where you come from dimensions other than 2 can be hard to picture.
The display of arrays and lists generally match in the nesting of brackets.