[Python] Dubbio sull'uso delle liste...

Enrico Franchi enrico.franchi a gmail.com
Dom 23 Giu 2013 08:18:47 CEST


On Jun 23, 2013, at 2:34 AM, Federico Figus <figus.federico a gmail.com> wrote:

> Come fai una list-comprehension a risolvere questo problema? Non puoi specificare l'indice quando la crei.

dict-comprehension. :)

> Se rileggi la mia risposta puoi trovare questa premessa:
> 
> se sei sicuro che la seconda lista avrà N elementi
> 
> cioè se sei sicuro che quella lista sarà riempita, quindi sfruttata totalmente.
> Quindi per questo problema specifico quali sono i problemi che portano la mia soluzione ad essere considerato un anti-pattern?

Si, certo. Come dicevo, asserito che verosimilmente la struttura dati piu' indicata e' un dict, verosimilmente la soluzione e', in questo caso specifico, una dict comprehension.

Mi spiego meglio: se abbiamo il vincolo che la sequenza sia sparsa, vedo molto piu' interessante usare un dict di una list.
Se invece la abbiamo non sparsa *e* gli elementi ti arrivano dentro in ordine casuale, verosimilmente quello che vorrei sarebbe una qualche forma di albero bilanciato. Pagherei appena di piu' l'inseriemento, ma poi mi troverei una cosa ordinata. In Python probabilmente (a meno di non definire qualcosa "a mano" starei comunque sul dict, ma con qualche riserva in piu'. 


> > Si, è una struttura che ti permette di inserire, rimuovere e recuperare elementi in varie posizioni, solitamente i metodi forniti sono size o length, insert, remove, get.
> 
> Non direi. Cioe' Java ce li mette, ma di per se su una lista hai qualcosa per creare la vuota, testare se e' vuota, cons, tail, head, magari un qualche tipo di append.
> 
> Avrei dovuto aggiungere anche un metodo set, comunque quelli suggeriti da te si possono derivre da quelli fondamentali elencati da me.

Quelli "fondamentali" non sono "fondamentali". Quelli sono, come dicevo, essenzialmente quelli che trovi nella List di Java (piu' tutta una serie di secondari). Per un bel po' di tempo, come dicevo sopra, il concetto astratto di lista era definito dai metodi da me elencati.


-enrico



Maggiori informazioni sulla lista Python