Forum >> Principianti >> Liste concatenate Python

Pagina: 1

Salve ragazzi , qualcuno di voi mi potrebbe aiutare a svolgere questo esercizio sulle liste concatenate senza usare le classi?
Il testo è riportato di seguito:




Sia data un lista doppiamente concatenata rappresentata mediante dizionario di dizionari del tipo:

lista={'head:{'prev':None,'next':n1}




{'tail:{'prev':n2,'next':None}

Si supponga che la lista contenga valori numerici.Scrivere una funzione in python che percorrendo la lista mediante puntatori,incrementi di uno il valore numerico degli elementi non fittizi contenuti nella lista.




Grazie per la vostra collaborazione in anticipo.
"senza usare le classi"... e usando le classi come faresti?
non le so fare nemmeno in effetti....
Ah, ecco... avevo immaginato che invece...


Comunque il testo dell'esercizio in quel modo non ha senso. Quello che hai scritto non è nemmeno un dizionario sintatticamente valido in python, e non riesco a capire *come* lui vuole che venga rappresentata una lista concatenata in questo modo (che poi, suppongo che intenda dire "doppiamente concatenata"). Cioè, se qualcuno mi dicesse di rappresentare una lista (doppiamente) concatenata con un dizionario, avrei delle idee... ma non so se farei quello che intende lui. Non capisco neanche se intende dire "un dizionario" o "una lista di dizionari", per esempio... mah.


Dopo di che, il resto dell'esercizio è ugualmente senza senso. I puntatori in python non esistono, quindi non saprei che cosa vuol dire "percorrere qualcosa mediante puntatori". Mah... "elementi non fittizi" non è semplicemente una terminologia informatica.





Sembra un testo che una volta era un esercizio di programmazione C, e che è stato adattato a esercizio di programmazione Python da qualcuno che non ha prima studiato Python. Mi auguro che tu abbia copiato male l'esercizio, ma se lo hai copiato bene... non so che dire, ti consiglio di cambiare libro/insegnante. Questo ti sta solo facendo perdere tempo.

Si è una lista doppiamente concatenata e devo incrementare di uno i valori che ci sono tranne head e tail ovviamente
sì, ok. E quindi? Come vuole che sia rappresentata quella lista, di preciso? Perché ripeto, quella cosa che hai copiato qui sopra non è neanche Python.
Io ho copiato solo testo.Ammettiamo che abbiamo questa lista:

lista={'head':{'prev':None, 'next':5}, 5:{'prev':'head', 'next':18},

18:{'prev':5, 'next':7},7:{'prev':18,'next':'tail'}, 'tail':{'prev':7, 'next':None}}





Credo che devo incrementare tutti i valori numerici.

Come potrei fare?
Oh, bene. Adesso viene fuori un esempio leggibile, in codice Python valido. Quindi capisci, vero, che prima non avevi "copiato solo testo"? Prima avevi copiato una cosa. Poi hai copiato una cosa differente. Capisci la differenza tra quello che avevi copiato prima e quello che hai copiato dopo? Lo vedi che non è la stessa cosa? Lo vedi che è una cosa diversa?
Te lo chiedo perché la padronanza del principio di non-contraddizione è un prerequisito per imparare a programmare in Python, sai.


Detto questo.

Se davvero questa è la rappresentazione che vuole il tuo prof, direi che conferma le mie supposizioni sulla pessima qualità dell'insegnamento che stai ricevendo. In ogni caso, l'esercizio ti chiede in pratica di modificare non solo i *valori* del dizionario, ma anche le *chiavi*. E siccome non è possibile modificare le chiavi di un dizionario, in pratica quello che devi fare è creare un *nuovo dizionario* che abbia le chiavi e i valori opportunamente modificati (aumentati di uno). Ovviamente questo non avrebbe nessun senso pratico nella realtà, ma è il modo per risolvere l'esercizio.


Puoi ciclare tra le chiavi e i valori del tuo dizionario con un ciclo "for" sugli "items" del dizionario... a questo punto prendi ciascuna chiave e ciascun valore, le incrementi se necessario, e le aggiungi al nuovo dizionario. Alla fine restituisci il nuovo dizionario finito, e sei a posto.


Una traccia potrebbe essere:

def incrementa_lista_concatenata(lista):
    nuova_lista = {}
    for ch, val in lista.items():
        ...
        ...
    return nuova_lista




Pagina: 1



Esegui il login per scrivere una risposta.