Slides 10
Slides 10
Informatica
Introduzione ai concetti fondamentali
Copyright © 2021 Vincenzo Grassi ([email protected]) – Università degli studi di Roma “Tor Vergata”
Except where otherwise noted, this work is licensed under
http://creativecommons.org/licenses/by-nc-sa/4.0/
Domini di dati
• Obiettivi di apprendimento
• generali
• meccanismi di estensione nei linguaggi di programmazione
• rappresentazione di dati strutturati
• uso di librerie di programmi (moduli) predefinite
• casi di studio
• testo con stile
• generazione automatica di testo
• Letture consigliate
• (da: Horstmann, Necaise – Concetti di informatica e
fondamenti di Python)
• cap. 6: par. da 6.1 a 6.6
Copyright © 2021 Vincenzo Grassi
([email protected]) – Università degli studi di
Roma “Tor Vergata” 2
Rappresentazione di dati strutturati
• Obiettivo:
• rappresentare domini (insiemi di valori) …
• … dove ogni elemento dell’insieme è una aggregazione di
vari valori
• eventualmente di tipo diverso
• Stringhe + informazioni di font e stile sono un esempio
• Un altro esempio è la vostra scheda anagrafica :
• aggregazione di vari dati (numerico, carattere, stringa, …)
• nome
• data di nascita
• sesso
• indirizzo
• …
Copyright © 2021 Vincenzo Grassi
([email protected]) – Università degli studi di
Roma “Tor Vergata” 3
Meccanismi Python
• Python offre i seguenti meccanismi :
• List
• Tuple
• Dictionary
• Elementi distintivi
• tipo di aggregato: disomogeneo (in generale)
• list, tuple, dictionary
• modalità di accesso a singoli elementi:
• per indice (posizione): list, tuple
• per chiave: dictionary
• mutabilità:
• mutable: list, dictionary
• immutable: tuple
Copyright © 2021 Vincenzo Grassi
([email protected]) – Università degli studi di
Roma “Tor Vergata” 4
List: meccanismo Python per
rappresentare dati strutturati
• Sintassi : [elem_0, elem_1, …, elem_n]
• Semantica
• elem_i può appartenere a un qualunque tipo di dato
Python
• string, numero, …
• può anche essere un oggetto di tipo list (lista annidata)
• elementi diversi possono essere di tipo diverso
• per convenzione, gli elementi sono numerati a partire da 0
• da sx verso dx
• ogni oggetto di tipo list ha associato con esso un insieme di
operatori su lista
• vedi prossime diapositive …
• una lista è un oggetto mutable
• può essere modificato sul posto
• membership
• in : T × sequence → boolean
• elem in mySeq restituisce True se mySeq contiene elem, False
altrimenti
• replication
• * : N × sequence → sequence
• oppure * : sequence × N → sequence
• n*mySeq oppure mySeq*n restituisce la sequenza fomata dalla
concatenazione di n copie di mySeq
[i][j][k]
[..., …, […, …, […, …, …] … ] … ]
[i][j]
# Seconda forma
for (key, value) in persona2.items():
print key, value
{"nome": "Mario",
"cognome": "Rossi",
"nato a": "Firenze",
"email": "[email protected]"},
{"nome": "Giuseppe",
"cognome": "Bianchi",
"nato a": "Venezia",
"email": "[email protected]"},
...
]
Copyright © 2021 Vincenzo Grassi
([email protected]) – Università degli studi di
Roma “Tor Vergata” 38
Esercizio
• Avendo in input una lista di dizionari di persone
persons e una stringa city costruire una
funzione che elenchi il nome e l’email di tutte le
persone presenti nella lista nati a city