Programmazione in Python per laprofs.sci.univr.it/~farinelli/courses/python/slides/data... · 2016....

27

Transcript of Programmazione in Python per laprofs.sci.univr.it/~farinelli/courses/python/slides/data... · 2016....

Page 1: Programmazione in Python per laprofs.sci.univr.it/~farinelli/courses/python/slides/data... · 2016. 4. 15. · Programmazione in Python per la bioin-formatica Liste Insiemi Dizionari

Programmazionein Python

per la bioin-formatica

Liste

Insiemi

Dizionari

Programmazione in Python per la

bioinformatica

University of Verona

Page 2: Programmazione in Python per laprofs.sci.univr.it/~farinelli/courses/python/slides/data... · 2016. 4. 15. · Programmazione in Python per la bioin-formatica Liste Insiemi Dizionari

Programmazionein Python

per la bioin-formatica

Liste

Insiemi

Dizionari

Sommario

Liste

Insiemi

Dizionari

Page 3: Programmazione in Python per laprofs.sci.univr.it/~farinelli/courses/python/slides/data... · 2016. 4. 15. · Programmazione in Python per la bioin-formatica Liste Insiemi Dizionari

Programmazionein Python

per la bioin-formatica

Liste

Insiemi

Dizionari

La struttura dati Lista

Page 4: Programmazione in Python per laprofs.sci.univr.it/~farinelli/courses/python/slides/data... · 2016. 4. 15. · Programmazione in Python per la bioin-formatica Liste Insiemi Dizionari

Programmazionein Python

per la bioin-formatica

Liste

Insiemi

Dizionari

Lista

Come si rappresenta una lista in python

Reminder: Lista collezione ordinata di elementiL = 〈a0, a1, · · · , an−1〉

La variabile strange_list è un puntatore alla locazione dimemoria che mantiene gli elementi della lista.

Page 5: Programmazione in Python per laprofs.sci.univr.it/~farinelli/courses/python/slides/data... · 2016. 4. 15. · Programmazione in Python per la bioin-formatica Liste Insiemi Dizionari

Programmazionein Python

per la bioin-formatica

Liste

Insiemi

Dizionari

Leggere gli elementi di una lista

Come leggere gli elementi di una lista

Gli elementi vanno da 0 a n − 1 (n = lunghezza lista)Posso leggere gli elementi di una lista tramite gli indici

Page 6: Programmazione in Python per laprofs.sci.univr.it/~farinelli/courses/python/slides/data... · 2016. 4. 15. · Programmazione in Python per la bioin-formatica Liste Insiemi Dizionari

Programmazionein Python

per la bioin-formatica

Liste

Insiemi

Dizionari

Modi�care gli elementi di una lista

Come modi�care gli elementi di una lista

Posso modi�care gli elementi di una lista tramite gli indici

Page 7: Programmazione in Python per laprofs.sci.univr.it/~farinelli/courses/python/slides/data... · 2016. 4. 15. · Programmazione in Python per la bioin-formatica Liste Insiemi Dizionari

Programmazionein Python

per la bioin-formatica

Liste

Insiemi

Dizionari

Attenzione al side e�ect!

Side e�ect sulle liste

Reminder: strange_list è un puntatore ad una lista

Posso avere side e�ect sulle stringhe ?

Page 8: Programmazione in Python per laprofs.sci.univr.it/~farinelli/courses/python/slides/data... · 2016. 4. 15. · Programmazione in Python per la bioin-formatica Liste Insiemi Dizionari

Programmazionein Python

per la bioin-formatica

Liste

Insiemi

Dizionari

Modi�care le stringhe

Non è possibile modi�care una stringa!

Le stringhe sono oggetti immutabili

Page 9: Programmazione in Python per laprofs.sci.univr.it/~farinelli/courses/python/slides/data... · 2016. 4. 15. · Programmazione in Python per la bioin-formatica Liste Insiemi Dizionari

Programmazionein Python

per la bioin-formatica

Liste

Insiemi

Dizionari

Liste e slicing

Slicing di una lista

Possiamo accedere ad un range di valori della listaPossiamo fare una copia della lista usando il range [:]

Page 10: Programmazione in Python per laprofs.sci.univr.it/~farinelli/courses/python/slides/data... · 2016. 4. 15. · Programmazione in Python per la bioin-formatica Liste Insiemi Dizionari

Programmazionein Python

per la bioin-formatica

Liste

Insiemi

Dizionari

Modi�care le Liste tramite slicing

modi�care parti di una lista

Possiamo modi�care un range di elementi

Page 11: Programmazione in Python per laprofs.sci.univr.it/~farinelli/courses/python/slides/data... · 2016. 4. 15. · Programmazione in Python per la bioin-formatica Liste Insiemi Dizionari

Programmazionein Python

per la bioin-formatica

Liste

Insiemi

Dizionari

Operazioni comuni sulle liste

Operazioni sulle liste

Concatenazione, built-in functions (i.e., len()) e operatore del

Page 12: Programmazione in Python per laprofs.sci.univr.it/~farinelli/courses/python/slides/data... · 2016. 4. 15. · Programmazione in Python per la bioin-formatica Liste Insiemi Dizionari

Programmazionein Python

per la bioin-formatica

Liste

Insiemi

Dizionari

Liste come oggetti

Metodi delle liste

Posso chiamare metodi sugli oggetti liste come per le stringhe

Per conoscere tutti i metodi delle liste digitare

help(list)

Page 13: Programmazione in Python per laprofs.sci.univr.it/~farinelli/courses/python/slides/data... · 2016. 4. 15. · Programmazione in Python per la bioin-formatica Liste Insiemi Dizionari

Programmazionein Python

per la bioin-formatica

Liste

Insiemi

Dizionari

Implementare una Pila usando le liste

Liste come Pile

Pila = Last In First Out

Posso usare i metodi append(elem) e pop() per realizzareuna pila tramite una lista

Page 14: Programmazione in Python per laprofs.sci.univr.it/~farinelli/courses/python/slides/data... · 2016. 4. 15. · Programmazione in Python per la bioin-formatica Liste Insiemi Dizionari

Programmazionein Python

per la bioin-formatica

Liste

Insiemi

Dizionari

Ordinare una lista

Modi per ordinare una lista

la funzione sorted(): ritorna una nuova lista

il metodo sort(): modi�ca l'oggetto di invocazione

Page 15: Programmazione in Python per laprofs.sci.univr.it/~farinelli/courses/python/slides/data... · 2016. 4. 15. · Programmazione in Python per la bioin-formatica Liste Insiemi Dizionari

Programmazionein Python

per la bioin-formatica

Liste

Insiemi

Dizionari

Liste e ordinamento

Quali liste posso ordinare

posso ordinare liste di elementi su cui sia de�nito un ordine

ma gli elementi devono essere dello confrontabili

Page 16: Programmazione in Python per laprofs.sci.univr.it/~farinelli/courses/python/slides/data... · 2016. 4. 15. · Programmazione in Python per la bioin-formatica Liste Insiemi Dizionari

Programmazionein Python

per la bioin-formatica

Liste

Insiemi

Dizionari

Tuple

Sequenza di elementi non mutabile

sequenza di valori separati dalla virgola

non sono mutabili

Page 17: Programmazione in Python per laprofs.sci.univr.it/~farinelli/courses/python/slides/data... · 2016. 4. 15. · Programmazione in Python per la bioin-formatica Liste Insiemi Dizionari

Programmazionein Python

per la bioin-formatica

Liste

Insiemi

Dizionari

Esercizi su liste

Eserc liste

Q1 data una lista di interi ed un intero stampare tutti glielementi presenti nella lista che sono strettamente minoridell'intero. [Hint: Usare il metodo delle liste index(v) pertrovare l'indice del valore v nella lista]. Scaricare emodi�care il �le eserc-liste-Q1.py [Sol: eserc-liste-Q1.sol]

Q2 risolvere l'esercizio precedente senza modi�care la listadata. Scaricare e modi�care il �le eserc-liste-Q2.py [Sol:eserc-liste-Q2.sol]

NOTA: NON USARE I CICLI

Page 18: Programmazione in Python per laprofs.sci.univr.it/~farinelli/courses/python/slides/data... · 2016. 4. 15. · Programmazione in Python per la bioin-formatica Liste Insiemi Dizionari

Programmazionein Python

per la bioin-formatica

Liste

Insiemi

Dizionari

Set

Collezione di elementi non ordinata

Non ci sono duplicati

Supportano le operazioni classiche su insiemi

Page 19: Programmazione in Python per laprofs.sci.univr.it/~farinelli/courses/python/slides/data... · 2016. 4. 15. · Programmazione in Python per la bioin-formatica Liste Insiemi Dizionari

Programmazionein Python

per la bioin-formatica

Liste

Insiemi

Dizionari

Operazioni su insiemi

Operazioni classiche su insiemi

Unione, Intersezione, Di�erenza

Page 20: Programmazione in Python per laprofs.sci.univr.it/~farinelli/courses/python/slides/data... · 2016. 4. 15. · Programmazione in Python per la bioin-formatica Liste Insiemi Dizionari

Programmazionein Python

per la bioin-formatica

Liste

Insiemi

Dizionari

Creare collezioni da altre collezioni

Usare le funzioni list() e set()

Possiamo creare una lista a partire da un insieme usando lafunzione list()

Possiamo creare una lista da una stringa con la stessafunzione

Possiamo creare una lista da una tupla con la stessafunzione

Discorso simile per gli insiemi

Page 21: Programmazione in Python per laprofs.sci.univr.it/~farinelli/courses/python/slides/data... · 2016. 4. 15. · Programmazione in Python per la bioin-formatica Liste Insiemi Dizionari

Programmazionein Python

per la bioin-formatica

Liste

Insiemi

Dizionari

Esercisi Insiemi

Eserc set

Q1 data una lista ordinata rimuovere tutti i doppioni estampare il risultato eserc-set-Q1.py [Sol: eserc-set-Q1.sol]

Q2 date due liste stampare l'insieme degli elementi contenutiin entrambe le liste eserc-set-Q2.py [Sol: eserc-set-Q2.sol]

Q2 leggere una stinga da input e stampare l'insieme deicaratteri che formano la stringa eserc-set-Q3.py [Sol:eserc-set-Q3.sol]

NOTA: NON USARE I CICLI

Page 22: Programmazione in Python per laprofs.sci.univr.it/~farinelli/courses/python/slides/data... · 2016. 4. 15. · Programmazione in Python per la bioin-formatica Liste Insiemi Dizionari

Programmazionein Python

per la bioin-formatica

Liste

Insiemi

Dizionari

Dicionaries

Collezione non ordinata di coppie (chiave,valore)

Le chiavi sono uniche nel dizionario (non ci sono duplicati)

Chiavi: devono essere tipi immutabili (i.e., stinghe onumeri)

Valori: possono essere di qualsiasi tipo (i.e., list)

Page 23: Programmazione in Python per laprofs.sci.univr.it/~farinelli/courses/python/slides/data... · 2016. 4. 15. · Programmazione in Python per la bioin-formatica Liste Insiemi Dizionari

Programmazionein Python

per la bioin-formatica

Liste

Insiemi

Dizionari

Accedere ai valori di un dizionario

Indicizzare un dizionario

usare le parentesi quadre come per liste e stringhe

se chiave non presente abbiamo un errore

Page 24: Programmazione in Python per laprofs.sci.univr.it/~farinelli/courses/python/slides/data... · 2016. 4. 15. · Programmazione in Python per la bioin-formatica Liste Insiemi Dizionari

Programmazionein Python

per la bioin-formatica

Liste

Insiemi

Dizionari

Aggiornare i valori di un dizionario I

Modi�care un dizionario I

possiamo aggiungere o modi�care coppie usando leparentesi quadre

Page 25: Programmazione in Python per laprofs.sci.univr.it/~farinelli/courses/python/slides/data... · 2016. 4. 15. · Programmazione in Python per la bioin-formatica Liste Insiemi Dizionari

Programmazionein Python

per la bioin-formatica

Liste

Insiemi

Dizionari

Aggiornare i valori di un dizionario II

Modi�care un dizionario II

usare del per rimuovere una coppia indicizzando con lachiave

aggiungere piu' coppie in una sola istruzione

Page 26: Programmazione in Python per laprofs.sci.univr.it/~farinelli/courses/python/slides/data... · 2016. 4. 15. · Programmazione in Python per la bioin-formatica Liste Insiemi Dizionari

Programmazionein Python

per la bioin-formatica

Liste

Insiemi

Dizionari

Ottenere tutti gli elementi di un dizionario

Accedere tutti gli elementi

la funzone len() restituisce la lunghezza

keys() restituisce le chiavi, values() restituisce i valori

Page 27: Programmazione in Python per laprofs.sci.univr.it/~farinelli/courses/python/slides/data... · 2016. 4. 15. · Programmazione in Python per la bioin-formatica Liste Insiemi Dizionari

Programmazionein Python

per la bioin-formatica

Liste

Insiemi

Dizionari

Esercisi Dizionari

Eserc dict

Q1 data una stringa composta da caratteri 'a','t','c','g' crearee stampare un dizionario che associ ciascuno dei 4 carattericon il suo numero di occorrenze. eserc-dict-Q1.py [Sol:eserc-dict-Q1.sol]

Q2 leggere una stringa da input e stampare il numero dioccorrenze del carattere piu' frequente considerando solo icaratteri 'a','t','c' e 'g'. eserc-dict-Q2.py [Sol:eserc-dict-Q2.sol]

NOTA: NON USARE I CICLI