¿Cómo declaro un array en Python?
Respuestas
¿Demasiados anuncios?variable = []
Ahora variable
se refiere a una lista vacía*.
Por supuesto, esto es una asignación, no una declaración. No hay forma de decir en Python "esta variable nunca debe referirse a nada que no sea una lista", ya que Python es de tipado dinámico.
*El tipo predeterminado incorporado de Python se llama una lista, no un array. Es un contenedor ordenado de longitud arbitraria que puede contener una colección heterogénea de objetos (sus tipos no importan y pueden mezclarse libremente). Esto no debe confundirse con el array
module, que ofrece un tipo más cercano al tipo array
en C; los contenidos deben ser homogéneos (todos del mismo tipo), pero la longitud sigue siendo dinámica.
Este es un tema sorprendentemente complejo en Python.
Respuesta práctica
Los arrays están representados por la clase list
(ver referencia y no los confundas con generadores).
Consulta ejemplos de uso:
# array vacío
arr = []
# inicializar con valores (puede contener tipos mixtos)
arr = [1, "anguilas"]
# obtener elemento por índice (puede ser negativo para acceder al final del array)
arr = [1, 2, 3, 4, 5, 6]
arr[0] # 1
arr[-1] # 6
# obtener longitud
longitud = len(arr)
# soporta append e insert
arr.append(8)
arr.insert(6, 7)
Respuesta teórica
Bajo el capó, el list
de Python es un envoltorio para un array real que contiene referencias a elementos. Además, el array subyacente se crea con un espacio extra.
Las consecuencias de esto son:
- el acceso aleatorio es muy barato (
arr[6653]
es igual aarr[0]
) - la operación
append
es 'gratuita' pero requiere espacio extra - la operación
insert
es cara
Consulta esta impresionante tabla de complejidad de operaciones.
También, por favor, revisa esta imagen, en la que he intentado mostrar las diferencias más importantes entre array, array de referencias y lista enlazada:
En realidad no declaras cosas, pero así es como creas una matriz en Python:
from array import array
intarray = array('i')
Para más información, consulta el módulo de arrays: http://docs.python.org/library/array.html
A lo mejor no quieres una matriz, sino una lista, pero otros ya han respondido eso. :)
Creo que querrías una lista con las primeras 30 celdas ya llenas. Entonces
f = []
for i in range(30):
f.append(0)
Un ejemplo de dónde esto podría usarse es en la secuencia de Fibonacci. Vea el problema 2 en Project Euler
- Ver respuestas anteriores
- Ver más respuestas