¿Cómo puedo obtener un array vacío del tamaño que quiera en python?


Básicamente quiero un equivalente en python de esto en C

int a[x];

Pero en python declaro un array como

a = []

Pero el problema es que quiero asignar ranuras aleatorias con valores como

a[4] = 1

Pero no puedo hacer eso con python, ya que el array está vacío

Author: user299648, 2011-03-05

5 answers

Si por "array" realmente te refieres a una lista de Python, puedes usar

a = [0] * 10

O

a = [None] * 10
 139
Author: Sven Marnach,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-03-05 17:44:29

No puedes hacer exactamente lo que quieres en Python (si te he leído correctamente). Necesitas poner valores para cada elemento de la lista (o como lo llamaste, array).

Pero, prueba esto:

a = [0 for x in range(N)]  # N = size of list you want
a[i] = 5  # as long as i < N, you're okay

Para listas de otros tipos, use algo además de 0. None es a menudo una buena opción también.

 11
Author: dappawit,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-03-05 17:46:18

Puedes usar numpy:

Importar numpy como np

Ejemplo de Matriz vacía :

np.empty([2, 2])
array([[ -9.74499359e+001,   6.69583040e-309],
       [  2.13182611e-314,   3.06959433e-309]])  
 9
Author: DanielTheRocketMan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-13 20:23:35

También se puede ampliar con extender método de lista.

a= []
a.extend([None]*10)
a.extend([None]*20)
 5
Author: Pythoni,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-03-05 19:36:55

Simplemente declare la lista y añada cada elemento. Para ex:

a = []
a.append('first item')
a.append('second item')
 1
Author: Lyle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-25 13:07:33