03 aprile 2011

[Python] Primi passi - Lezione 4

Torniamo a parlare del linguaggio più bello del mondo. Mhhh, no non parlo del Sanscrito, ma del linguaggio di programmazione Python.

Dopo aver affrontato la sintassi, l'indentazione, i numeri e le stringhe, ora non possiamo non soffermarci su uno degli strumenti più potenti del linguaggio che ci accompagneranno sempre nella nostra avventura pythonica: le Liste.

NOTA: Da questa lezione per facilitare la lettura userò la colorazione usata da iPython: in verde i comandi dati ed in rosso quelli restituiti da Python.



Le liste.
Prima di tutto definiamo cosa è una lista. Come la parola forse fa intuire, le liste sono un insieme ordinato di elementi anche diversi tra loro (numeri, stringhe, altre liste, etc..).

Ma siccome le chiacchiere stanno a zero e due righe di codice valgono sempre molto più, ecco allora qualche utile esempio:
1. lista = [22,3,1972]
2. print lista

Risultato:
1. [22,3,1972]

Notiamo subito la presenza di [ e ]. Queste parentesi ci fanno dire a Python che vogliamo creare una lista. Ma la lista creata era molto semplice, nel senso che conteneva tutti numeri e quindi esageriamo. Creiamo una lista con elementi diversi.
1. nuova_lista=[22,"pierce",lista]
2. print nuova_lista

Otteniamo:
[22, 'pierce', [22, 3, 1972]]

Come noterete senza fatica abbiamo creato un lista con dentro un numero, una stringa ed... un'altra lista. Wow, che forte emozione. Naturalmente dentro questa lista ci potremmo mettere tutto, credo sia chiaro..

Iniziamo a giocare un po' ora. Torniamo alla nostra lista iniziale. Se volessimo estrarre un elemento da essa lo potremo fare molto facilmente.
1. print lista[0]

Risultato:
1. 22

.. e se volessi sapere quanti valori ha la lista? Lo otterrei con len(lista):
1. print len(lista)

Per:
1. 3

Bene andiamo avanti. Se per errore volessi estrarre l'elemento 4 della lista (che non esiste), Python ci avvertirebbe con un messaggio di errore:
IndexError: list index out of range

Se quindi voglio stampare a video l'ultimo elemento di una lista posso usare len() per sapere quanti sono gli elementi e stampare l'ultimo o usare la seguente dicitura:
1. print lista[-1]

Per ottenere:
1. 1972

Tutto chiaro no? Abbiamo chiesto a Python di restituire il valore partendo in fondo alla lista che quindi sarà appunto l'ultimo valore. Ovviamente possiamo "affettare" la lista come ci pare giocando con la posizione iniziale e finale. Ad esempio [0:2] estrarrà, partendo dagli indici, il valore corrispondenti nella lista. Ma se volessi aggiungere un elemento? Non ci sono problemi, usiamo insert, specificando dove vogliamo mettere il nuovo valore nella lista ed il valore stesso.

Scriviamo:
1. lista.insert(2,'rondo')
2. print lista

Ottenendo:
1. [22, 3, 'rondo', 1972]

Come vedete al valore 2 ora è apparso "rondo". Ora voglio cancellare un valore dalla mia lista come devo fare? Con remove che esattamente come insert rimuove quanto scritto.

NOTA:Occhio perché a seconda della versione di Python potreste avere dei problemi per cancellare col solo indice ed il comando:
1. lista.remove(2)

potrebbe scatenare:
ValueError: list.remove(x): x not in list

Niente paura, usate per la stessa operazione __delitem__ indicando ora l'indice:
1. lista.__delitem__(2)
2. print lista

Et voilà:
1. [22, 3, 1972]

Come vedete rondo è sparito nella nebbia. Ora però voglio sapere se 3 è presente nella lista, come posso fare?
1. print lista.count(3)

Il risultato sarà:
1. 1

Ma 1 non è la posizione, ma vuole dire TRUE (vero), cioè l'elemento è presente nella lista e per sapore dove si trova:
1. print lista.index(3)

output:
1. 1

Stavolta 1 è la posizione. Facendo la stessa cosa con 1972 otterrei:
1. 2

Esistono poi altre metodi che mi permettono di operare sulle stringhe come pop, reverse e sort, che rispettivamente cercano e cancellano un elemento, invertono od ordinano la lista, ma ovviamente lascio a voi il piacere della scoperta.

Saluti e Rock on Python.

Tondo è bello...

Tondo è bello...