Stavo cercando di fare qualcosa in Python che utilizza la seguente procedura generale e voglio sapere qual è il modo migliore per appropriarsene.La maggior parte del modo Pythonic per costruire iterativamente un elenco?
Innanzitutto, una fase di inizializzazione:
- creare un elemento M.
- Creare un elenco L e aggiungere M a L.
secondo cappio attraverso la seguente:
- Creare un nuovo articolo modificando l'ultimo elemento aggiunto a L.
- Aggiungere il nuovo elemento a L.
Come semplice esempio, dire che voglio per creare una lista di liste in cui la lista ennesima contiene i numeri da 1 a n. Potrei usare la seguente (sciocca) procedura.
- Inizialmente M è [1] e L = [[1]].
- Quindi, modifica [1] aggiungendone 2 per creare il nuovo elemento [1,2], quindi aggiungi [1,2] a L così L = [[1], [1,2]].
- Quindi, modifica [1,2] aggiungendo 3 ad esso per creare il nuovo elemento [1,2,3], quindi aggiungi [1,2,3] a L così L = [[1], [1] , 2], [1,2,3]].
- Quindi, modifica [1,2,3] aggiungendo 4 a esso per creare il nuovo elemento [1,2,3,4], quindi aggiungi [1,2,3,4] a L così L = [ [1], [1,2], [1,2,3], [1,2,3,4]]. ecc
ho provato un paio di cose, ma la maggior parte di loro di modificare non solo l'ultimo elemento aggiunto, ma anche oggetti aggiunto L nelle fasi precedenti. Per il particolare problema che mi interessava, sono riuscito a trovare una soluzione che si comporta correttamente (almeno per casi di piccole dimensioni), ma sembra inelegante, non sono sicuro del motivo per cui funziona quando altre cose no, e io Non sono nemmeno sicuro che si comporterebbe ancora come desiderato per casi di grandi dimensioni. Inoltre, non sono sicuro di poter adattare il mio approccio a problemi simili. Non è il caso di me che non capisco il problema, dal momento che ho codificato la stessa cosa in altri linguaggi di programmazione senza problemi.
Quindi mi chiedo come i programmatori Python più esperti possano gestire questo compito generale.
(Sto omettendo il mio codice in parte perché sono nuovo qui e non ho capito come inserirlo su StackOverflow, ma anche perché è long-ish e non voglio aiuto con il problema particolare, ma piuttosto come gestire il procedimento più generale I descritto sopra)
Sarebbe meglio se tu scrivessi il codice. Inoltre, scrivi un esempio concreto che mostra l'input di esempio e l'output previsto –
+1 per un'ottima prima domanda. Sono un po 'poco chiaro cosa intendi, però: "molti di loro modificano non solo l'ultimo elemento aggiunto, ma anche gli elementi aggiunti a L nei passaggi precedenti". Non è questo il tuo comportamento desiderato? Altrimenti, perché stai costruendo questa lista? Puoi dare un esempio più concreto? –
@ ÓscarLópez E 'piuttosto lungo, ma darò una possibilità una volta che ho capito come. Ci ho provato prima, ma è finito in un gran casino, e sono diventato ancora più disordinato quando ho provato a ripulirlo. –