Domanda
Perché non c'è un contenitore standard di alberi in Python?
Dare una risposta
Articoli simili
- Perché il giacinto d'acqua è considerato una minaccia?
- Perché la gente mangia le arachidi bollite nel sud?
- Ogni volta che mangio arachidi devo starnutire. Perché?
- Perché le sedie di plastica per la scuola hanno dei buchi sul retro?
- Perché alcuni giovani perdono i capelli e diventano calvi? Quali sono le cause e la cura per questo?
La mia ipotesi (anche se solo Guido lo sa per certo) è che ci sono molti tipi diversi di alberi, e che i dizionari Python sono abbastanza buoni per la maggior parte dei casi d'uso.
Puoi emulare un albero binario usando una lista e il modulo bisect per la ricerca binaria. http://docs.python.org/library/bisect.html
Non posso parlare del ragionamento reale qui, ma posso dare una spiegazione del perché non lo vedo come un problema:
Il più delle volte, quando uno decide che ha bisogno di una struttura ad albero (qui siamo nella terra del codice reale, non dei progetti di classe), ha bisogno di una struttura ad albero molto specifica che può o non può avere puntatori ai genitori, puntatori ai fratelli, ancora più puntatori per la cascata frazionaria, e probabilmente ha tutti i tipi di metadati e funzioni specializzate che fanno le cose esattamente come devono essere fatte per uno scopo molto specifico.
Se la gente di Python vi avesse dato una struttura ad albero predefinita, avrebbe avuto bisogno di tutti i tipi di parametri di personalizzazione e avrebbe dovuto implementare un'API piuttosto grande affinché la vostra classe fosse un elemento dell'albero, il che l'avrebbe resa incomprensibile e probabilmente più codice di quanto avreste mai avuto bisogno, il che significa che ne avreste comunque implementato una vostra, oppure sarebbe stata estremamente restrittiva, e quindi completamente inutilizzabile per qualsiasi scopo serio, quindi, di nuovo, ne avreste semplicemente implementato una vostra.