2011-01-09 13 views

Respuesta

10

Usted puede utilizar la lista incorporada - subyace aplicación es similar a C++ vector. Aunque algunas cosas difieren, por ejemplo, puede colocar objetos de diferente tipo en una y en la misma lista.

http://effbot.org/zone/python-list.htm

+0

Acceder linealmente en el tiempo O (1), similar al acceso a un vector como una matriz en C++? – pandoragami

+0

Sí, la implementación subyacente es como un vector C++. –

+0

que las matrices se denominan listas (que se utiliza como acceso directo para genereally lista enlazada, que es una estructura de datos completamente diferente) es una de las pocas cosas realmente desafortunados en Python. – delnan

8

Tener un vistazo a la página de Python datastructures. He aquí una traducción aproximada:

  1. () => boost :: Tupla (con una distinción importante, no se puede volver a asignar valores en una tupla de Python)
  2. [] => std :: vector (como el comentarios han aluded hacia, carece de características de memoria asociados con vectores)
  3. [] => std :: lista
  4. {} => TR1 :: unordered_map o impulsar :: unordered_map (esencialmente una tabla hash)
  5. conjunto () => std :: set
+4

[]! = Std :: list. –

+0

Bueno, puede ser ... depende de la implementación del respaldo. Pero en CPython, sí, '[]'! = 'Std :: list'. – Amber

+2

@Amber: Ninguna implementación de Python se atrevería a usar listas enlazadas para el tipo 'list' integrado. Eso afectaría totalmente a cada pieza de código que se basa en la indexación que es O (1) (una suposición totalmente válida) - es decir, realmente mucho. Podemos ignorar con seguridad este escenario. – delnan

0

Python también tiene como parte de la biblioteca estándar un tipo array que es más eficiente y el tipo de miembro está restringido.

También puede consultar numpy (que no forma parte de la biblioteca estándar) si necesita tomarse en serio la manipulación eficiente de vectores/matrices de gran tamaño.

Cuestiones relacionadas