Forum >> Principianti >> Estrarre dati da una nested list

Pagina: 1

Buonasera a tutti, mi chiamo Federico ed a 31 anni ho deciso di immattirmi un po' con Python :)



Ho una lista di valori in una nested list del tipo:

Lista = [['18/09/16', ' 0:10', ' 13.6', ' 13.7', ' 13.6', '90'], ['18/09/16', ' 0:20', ' 13.2', ' 13.7', ' 13.6', '89'], etc..]




Le necessità sono

- Saltare le prime 3 righe, le quali contengono testo

- Estrarre i campi 0, 1, 2, 5 di ogni sublist

- Inserire i dati in una nuova lista che vada a capo per ogni iterazione




Vi chiedo consiglio perchè sono una paio di giorni che sbatto la testa senza risultato, non riesco ad implementare un ciclo for funzionale al mio caso. Non vi saprei nemmeno elencare le prove che ho fatto perchè mi son perso per strada :D




Grazie a chiunque voglia dedicarmi un po' di tempo
Ciao Federico, non ho capito bene che vuoi fare. Quelli che descrivi come potenziali problemi e l'esempio che hai fornito non sono compatibili, posta la lista completa.

Comunque se vuoi estrarre sempre gli stessi valori non vedo un grosso problema, un po' più capire che intendi per "vada a capo", credo che stia confondendo la visualizzazione con la struttura vera e propria della lista.

Con un semplice for sulla tua lista ottieni l'accesso alle liste annidate, ed a questo punto puoi accedere senza problemi ai singoli elementi che la compongono:
>>> Lista = [['18/09/16', ' 0:10', ' 13.6', ' 13.7', ' 13.6', '90'], ['18/09/16', ' 0:20', ' 13.2', ' 13.7', ' 13.6', '89']]

>>> for n in Lista:
...   print(n[ 1 ]) #Accendo al secondo elemento di ogni lista (gli spazi intono a 1 li ho messi solo per una corretta visualizzazione)
0:10
0:20
A questo punto col metodo append() puoi mettere nella nuova lista quello che vuoi.

Se mi chiarisci gli altri aspetti ti posso aiutare anche per il resto.

Cya

Ciao Daniele, grazie! Ti avevo detto che mi ero perso per strada! :D
Questo è un estratto della lista (che sono già riuscito ad importare via web, splittare ed inserirla nella variabile)



Vorrei ottenere la stessa visualizzazione con i valori [0,1,2,5] di ogni riga. Ora il problema è (ovviamente): TypeError: list indices must be integers, not tuple..Significa che, essendo tipi diversi, dovrei indexare ogni gruppo annidato?
Giusto per farti chiudere lo stomaco, ho provato ad usare append()
>>> for l in Lista[3:]:
... print(l.append(l0), l.append(l1), l.append(l2), l.append(l5))
...
(None, None, None, None)
(None, None, None, None)
(None, None, None, None)


Successivamente ci saranno altre operazioni da farci sopra.. ma un passo alla volta ;)



--- Ultima modifica di Feed in data 2016-09-21 11:52:17 ---
Seguiamo insieme un esempio: vogliamo creare una nuova lista, che chiameremo con molta fantasia nuova_lista, con gli elementi 0 e 2 di quella originale. Quindi:
>>> lista_originale = [['18/09/16', ' 0:10', ' 13.6', ' 13.7', ' 13.6', '90'], ['18/09/16', ' 0:20', ' 13.2', ' 13.7', ' 13.6', '89']]
>>> nuova_lista  = [[n[ 0 ],n[ 2 ]] for n in lista_originale]
>>> nuova_lista
[['18/09/16', ' 13.6'], ['18/09/16', ' 13.2']]
Nota che ho inserito delle liste nidificate anche nella nuova_lista per una maggiore facilità di manipolazione, ma vedi tu usa quello che ti è più comodo, libera la fantasia.

Cya


Pagina: 1



Esegui il login per scrivere una risposta.