Si realmente quieres una matriz de estilo C
import array
a = array.array('i', x * [0])
a[3] = 5
try:
[5] = 'a'
except TypeError:
print('integers only allowed')
Tenga en cuenta que no existe el concepto de variable no inicializada en Python. Una variable es un nombre que está vinculado a un valor, por lo que ese valor debe tener algo. En el ejemplo anterior, la matriz se inicializa con ceros.
Sin embargo, esto es poco común en Python, a menos que realmente lo necesite para cosas de bajo nivel. En la mayoría de los casos, es mejor que use una lista vacía o una matriz numpy vacía, como sugieren otras respuestas.
a = [obj] * N
es que el mismo obj aparece en cada elemento de la matriz. Si es un objeto mutable y modifica un elemento, todo se cambiará. ... Pero, para este ejemplo usando números enteros (o cualquier otro tipo inmutable), no hace ninguna diferencia. O, si solo asigna elementos, tampoco es un problema. (Lo menciono porque he hecho exactamente eso con demasiada frecuencia :))