Básicamente quiero un equivalente de python de esto en C:
int a[x];
pero en Python declaro una matriz como:
a = []
y el problema es que quiero asignar ranuras aleatorias con valores como:
a[4] = 1
pero no puedo hacer eso con Python, ya que la matriz está vacía.
python
arrays
dynamic-arrays
usuario299648
fuente
fuente
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 :))No puedes hacer exactamente lo que quieres en Python (si te leo correctamente). Debe ingresar valores para cada elemento de la lista (o como lo llamó, matriz).
Pero intente esto:
Para listas de otros tipos, use algo además de 0. también
None
suele ser una buena opción.fuente
range(N)
ya producirá una lista si Python <3.0.xrange(N)
Python 2.x. Sin embargo, no estoy seguro de cómo está al borde de lo incorrecto. Lo prefieroa = range(N)
porque cada elemento comienza con un "predeterminado" sensato. Supongo que es cuestión de opinión.Puedes usar numpy:
Ejemplo de matriz vacía :
fuente
Simplemente declare la lista y agregue cada elemento. Por ejemplo:
fuente
también puede ampliar eso con el método de extensión de lista.
fuente
Si usted (u otros buscadores de esta pregunta) estaban realmente interesados en crear una matriz contigua para llenar con números enteros, considere bytearray y memoryivew :
fuente
fuente
Si realmente quieres una matriz de estilo C
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.
fuente