Ahora mismo estoy utilizando una lista, y esperaba algo así como:
verts = list (1000)
¿Debería usar un array en su lugar?
Debería considerar el uso de un tipo dict
en lugar de una lista preinicializada. El coste de una búsqueda en el diccionario es pequeño y comparable al coste de acceder a un elemento arbitrario de la lista.
Y cuando se utiliza un mapeo se puede escribir:
aDict = {}
aDict[100] = fetchElement()
putElement(fetchElement(), fetchPosition(), aDict)
Y la función putElement
puede almacenar el elemento en cualquier posición dada. Y si necesitas comprobar si tu colección contiene un elemento en un índice determinado es más pitónico escribir:
if anIndex in aDict:
print "cool!"
que:
if not myList[anIndex] is None:
print "cool!"
Ya que este último asume que ningún elemento real de tu colección puede ser None
. Y si eso sucede - su código se comporta mal.
Y si necesitas desesperadamente el rendimiento y por eso intentas preinicializar tus variables, y escribir el código más rápido posible - cambia tu lenguaje. El código más rápido no puede ser escrito en Python. Deberías probar C en su lugar e implementar wrappers para llamar a tu código pre-inicializado y pre-compilado desde Python.
Sin saber más sobre el dominio del problema, es difícil responder a tu pregunta. A menos que estés seguro de que necesitas hacer algo más, la forma pitónica de inicializar una lista es:
verts = [];
¿Estás viendo realmente un problema de rendimiento? Si es así, ¿cuál es el cuello de botella del rendimiento? No intente resolver un problema que no tiene. Es probable que el coste de rendimiento para llenar dinámicamente un array hasta 1000 elementos sea completamente irrelevante para el programa que realmente estás tratando de escribir.
La clase array es útil si las cosas de tu lista van a ser siempre de un tipo primitivo específico de longitud fija (por ejemplo, char, int, float). Pero, tampoco requiere una pre-inicialización.