vuoi
o PayPal
tutte le volte che vuoi
DATI STRUTTURATI: LE LISTE
➢ Tipi di dati semplici: float, interi bool (e stringhe)
o Siamo vincolati alla rappresentazione del singolo dato codificato in un oggetto
puntato da una variabile
o Es. se dobbiamo calcolare una distanza, abbianmo bisogno di una coppia di
coordinate x,y -> aumento variabili e oggetti -> difficile da gestire in un programma
con dati semplici es interi (100 misure -> 200 variabili)
o Serve un contenitore che contiene tutte le variabili di quel dato
o Es. stringa raggruppa tanti caratteri in una stringa
➢ Phyton offre però anche tipi di dati strutturati
o Composto d avalori che sono a loro volta collezioni o sequenze di valori piu semplici
Linguaggio macchina di alto livello offrono i tipi di dato strutturati x aumentare l’espressività e la
facilità con cui scrivere programmi complessi
o Es. scrivere nomi e cognomi degli studenti -> servirebbero 2 variabili per nome e
cognome quindi..
➢ Tipi di dato strutturati -> tre vantaggi:
o Unico puntatore x accedere alla collezione di dati
o Operazoni sulla collezione di dati (es media, varianza ordinamento)
o In phyton i tipi di dato strutturati sono mutabili
▪ I dati semplici sono immutabili
▪ La stringa pero è sempre immutabile anche se strutturato
LISTA: sequenza ordinata di valori ordinati divisi
da virgola racchiuse in [ ]:
1- per definirla serve la [ ] con virgola tra i valori
che sono ordinati
2- ogni elemento può essere di tipo diverso (float,
int bool -> si possono mischiare)
3- ci puo essere una lista vuota
OPERAZIONI SULLE LISTE: solo tra tipi compatibili (elementi dello stesso tipo)
1)come nelle stringhe
3) + = concatenazione come in stringhe
4) in e not in: cercare un elemento in una
lista, permette quindi di verificare
l’assenza o la presenza di un valore nella
lista
5) != o == : diverso o uguale -> se nella
medesima posizione ci sono gli stessi
identici elementi e se hanno la stessa
lunghezza (es. se in posizione poizione 2 in lista 1 c’è 3, e in ista 2 ci deve essere 3)
➢ Lista 1= [1,2,3] e lista 2 = [2,3,4]
o >>> lista1==lista2 -> False
o >>> [1,2,4,] == [2,3,4] (posso scriverlo anche cosi, non deve essere per forza
un’espressione)
o >>> [1,2,3] ==lista2 posso scrivere anche così
INDICIZZAZIONE
- Lista[indice] = a quella della stringa
- Differenza:
o Stringa: prendo un carattere contenuto nella stringa
o Caraattere compare nella parrte destra es. var= lista [indici]
o Lista: lista[indice] = nuovo valore -> liste sono mutabili -> ce anche a sinistra cosa che
non posso fare sulla stringa
Esempi: -se chiedo type(values[2])
chiedo il valore del dato
assoicato a un elemento in
posizione 2 -> intero
-se chiedo type(values)=list
SLICING -> SOTTOLISTE
Come nelle stringhe -> prendo
pezzi della lista
Il CONFRONTO è SUI VALORI della lista 1- chiedo l’id degli oggetti associati alle
3 variabili -> dovrebbero essere tutte
diverse
2- 3 variabili x, y, z che puntano ai loro
elementi:
a. Phyton associa alla lista gli elementi
1,2,3 con indicizzazione a ogni
elemento puntato da x
b. Phyton -> realizza che gli oggetti
1,2,3 li ha gia creati -> crea solo la variabile y e l’oggetto lista associato a y e
punta direttamete a 1,2,3 che gia esistono -> in questo caso l’indicizzazione è la
stessa per x e y
c. Per z vale lo stesso ma con indicizzazione differente da x e y infatti -> z=[2,3,1]
3- >>> x== y -> True perche sono uguali, con stessi elementi, stesse posizioni e stessa
lunghezza
4- >>> y== z -> False
5- >>> id(x[0], id(y[0], id(z[2]) -> hanno tutti lo stesso id perche corrispondono tutti
all’elemento 1
➢ Esempi di in e not in:
➢ Concatenzione: lista1+lista2 = lista1lista2 -> ordinato -> prima elementi lista 1 poi elementi
lista 2
o X = [1,2,3] y= [2,3,4]
o Z= x+y = [1,2,3,2,3,4] -> ci sono 2 elementi 2 -> hanno però un indice diverso
▪ Es. in stringhe: “mamma” -> la m compare 3 volte ma non è un problema
• Lo stesso vale per le liste – un elemento puo comparire piu volte
perchè cio che importa è il loro ordine, quindi la loro posizione
(indice)
o Le liste di partenza però non cambiano, sono sempre x e y, mentre a z ho associato
la lista1+lista2
o esempio
FUNZIONI BUILT-IN 1- len(lista) -> lunghezza della lista
-> Deve ricevere un oggetto di tipo
SEQUENZA -> collezione ordinate di ogg
-Vale come per le stringhe
2- min e max (lista)
- Se solo numeri -> riporta il piu
piccolo o grande
- Se carattere -> ordinamento
lessicografico
- Num e stringhe -> ERRORE
3- range(val) -> valore deve esser num intero positivo <- es.
- Puo essere trasformato in una lista [0,1......a-1] se a>0
- Dato un valore -> puo struire una lista da [0 a val-1]
Osservazione:
➔ Lista ‘ordinata’ è diverso dall’ordinamento aritmetico
➔ Ordinata vuol dire che ad ogni elemento è associato un indice a partire dall’indice 0 (indici =
posizione dell’elemento nella lista)
MUTABILITA DELLA LISTA: - 32 ind0
- 54 ind1
- 67 indice 2
1. Sono stati creati 3 ogg interi e 1 ogg lista -> 32,54,67 e l’oggetto lista ptr
2. >>> id(values) -> chiedo id dell’oggetto lista a cui punta values (variabile)
3. >>>values[1] -> 54
➢ MUTABILITA
o Associo values[1] a un nuovo valore
▪ >>>values[1]= 65.5
▪ Di conseguenza si crea un nuovo oggetto 65.5 a cui punterà l’oggetto lista
o Se chiedo values[1] non sara piu 54 ma sara il nuovo valore 65.5
o 54 viene cancellato -> non è piu accessibile, non esiste piu
o La lista quindi è MUTABILE
o L’id del values cambiera di conseguenza
1. >>> x=values[2] = 67
2. >>>values[2] = 10
a. L’oggetto 67 non viene eliminato perche values[2] viene associato a x
b. Mentre values[2] viene associato ad un nuovo oggetto che è 10 k
➢ Variabile è associata alla lista non all’oggetto stesso!!
➢ >>> x=[32,54,67]
➢ >>>id(x)
➢ >>>> y=x -> assegnamento -> associo la nuova variabile y a x che è associata alla lista
o Y quindi come x è associato allo stesso oggetto lista di x
▪ Non si crea un nuovo oggetto lista perchè è la stessa