-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Il 03/11/2010 17:29, Carlos Catucci ha scritto: >> tutta una serie di cose... Se questa lista supera una certa dimensione, > > > circa 100 Mb, python esce con un memory error (dopo aver saturato > la RAM). > > E' possibile far qualcosa? > > Prova ad usare un array, invece che una lista. > > > Perdonami ma dove sarebbe la differenza? Mi hanno insegnato (magari a > torto) che in Python gli array sono detti Liste e le Hashtable o Array > Scalar sono detti Dizionari. >
In Python abbiamo: - - list: implementate usando un array C http://bytes.com/topic/python/answers/101848-list-implementation - - dict: non credo sia una semplice hash table - - array: implementati come array C, e che possono contenere solo tipi base (vedi documentazione) La differenza tra list ed array e che le le liste contengono puntatori ad oggetti Python (allocati sullo heap). Invece gli array (modulo array oppure numpy) sono come gli array C. Un'altra importante differenza tra lista ed array, è che quando aggiungi elementi ad una lista, di tanto in tanto deve essere effettuato un resize, che quindi occupa il doppio della memoria richiesta (per la vecchia e la nuova lista). Un array, invece, può essere pre allocato, se sai lo spazio che ti serve. Unica "pecca" del modulo array è che non puoi inizializzare un array specificando una dimensione ed il valore di default. numpy offre un array molto più flessibile, e che può contenere qualsiasi tipo Python. Ciao Manlio -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAkzRkUkACgkQscQJ24LbaURoHwCgmbknSyn3NJXzRw8laRfMfOo5 m6UAnigzXc26i9MWcE2O0KBGW0EIzNqG =GhvS -----END PGP SIGNATURE----- _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python