• Non ci sono risultati.

Python (data structures)

N/A
N/A
Protected

Academic year: 2021

Condividi "Python (data structures)"

Copied!
62
0
0

Testo completo

(1)

Python (data structures)

Loriano Storchi

loriano@storchi.org

http:://www.storchi.org/

(2)

Data structures

Le strutture dati consentono di organizzare i dati in modo da rendere più efficiente il loro utilizzo e la loro gestione

Vedremo in particolare stringhe, liste, tuple, dizionari e

insiemi. Solo le basi minime utili per svolgere esercizi di

base

(3)

NUMERI COMPLESSI

(4)

Complex numbers

Un numero complesso è un numero che può essere

espresso nella forma a + ib, dove aeb sono numeri reali e i

è una soluzione dell'equazione x

2

= −1. Poiché nessun

numero reale soddisfa questa equazione, i è chiamato

numero immaginario.

(5)

Complex numbers

I numeri complessi sono intrinsecamente definiti in python

(6)

Complex numbers

la funzione type () viene utilizzata principalmente per scopi

di debug. Se viene passato il tipo di argomento singolo

(obj), restituisce il tipo dell’oggetto specificato.

(7)

Digressione OOP e classi

(8)

OOP

Object-oriented programming (OOP) è un paradigma di programmazione basato sul concetto di "oggetti", che possono contenere dati, sotto forma di campi (spesso noti come attributi o proprietà), e codice, sotto forma di procedure (spesso noti come metodi). (Wikipedia)

I linguaggi OOP più utilizzati sono basati sul concetto classe.

Python è multi-paradigma e supporta OOP

Una classe specifica un nuovo tipo, all'interno di una

classe sono presenti elementi di dati e metodi

(9)

OOP

(10)

OOP

(11)

STRINGS

(12)

Strings

Una string e’ una sequenza di caratteri, in python ci sono diversi metodi / operazioni utili per la manipolazione di stringhe, una stringa in generale può essere vista come un array di caratteri

Operazioni tra stringhe

(13)

Strings

Estrarre sottostringhe, le stringhe sono vettri di caratteri

(14)

Strings : delimiter

: è il delimitatore che serve a "suddividere" I sottoinsiemi nelle sequenze, [inizio: fine]

[1: 5] è equivalente a "da 1 a 5" (5 non incluso)

[1:] è equivalente a "1 alla fine"

[: -2] da "inizio a -2" -2 non incluso

(15)

Strings

Estrarre sub-strings, strings sono array di caratteri

(16)

Strings

La classe string ha diversi methodi

find() Determina se la string str e’ presente, restituisce

l'indice iniziale.

(17)

Strings

split() restituisce un elenco di stringhe dopo aver

suddiviso la stringa usando il separatore specificato..

(18)

LISTS

(19)

Lists

List è una collezione ordinata e modificabile. Consente

membri duplicati.

(20)

Lists

Lists sono sequenze ordinate di oggetti, molte operazioni

di base sono in comune con le stringhe

(21)

Lists

Lists sono sequenze ordinate di oggetti, molte operazioni

di base sono in comune con le stringhe

(22)

Lists

Lists sono sequenze ordinate di oggetti, molte operazioni

di base sono in comune con le stringhe. Ma nel caso delle

stringhe non posso assegnare un elemento

(23)

Lists

Lists hanno molti metodi vedremo solo i più importanti

list.append(elem) -- aggiunge un singolo elemento alla fine della lista.

list.insert(index, elem) -- inserisce l'elemento in

corrispondenza dell'indice dato, spostando gli elementi a destra.

list.extend(list2) aggiunge gli elementi di list2 alla fine

della lista.

(24)

Lists

Lists aggiungere elementi

(25)

Lists

Lists aggiungere elementi

(26)

Lists

Lists aggiungere elementi

(27)

Lists

Rimuovere elementi da una lista

remove rimuove il primo valore corrispondente

(28)

Lists

Rimuovere elementi da una lista

del rimuove un elemento all’indice specificato

(29)

Lists

Rimuovere elementi da una lista

pop rimuove l'elemento in corrispondenza di un indice

specifico e lo restituisce

(30)

Lists

Il metodo sort

(31)

TUPLES

(32)

Tuples

Le tuple Python sono molto simili alle liste ma la loro

manipolazione è più veloce dato che sono "immutable"

(33)

Tuples

Ma non posso modificare un valore

(34)

But...

Ma un dato elemento di una tupla puo’ essere mutabile, e

quindi:

(35)

DICTIONARY

(36)

Dictionary

A dictionary e’ una sequenza di valori, ed ogni nelemeto e’

una coppia key : value. Le chiavi sono uniche e i dizionari

vengono creati utilizzando {

(37)

Dictionary

Possiamo controllare se una chiave e’ presente o

meno

(38)

Dictionary

Possiamo anche controllare se un valore e’ presente

(39)

Dictionary

- dict.items() restituisce una lista di tuples

(40)

Dizionari

(41)

Dizionari

clear(): rimuove tutti gli elementi

pop(): rimuove e restituisce il valore corrispondete alla chiave

del L'istruzione rimuove l'elemento specificato dal

dizionario. Se la chiave fornita non è presente nel

dizionario KeyError.

(42)

PYTHON MEMORY

MANAGEMENT

(43)

Reference

Quando dichiaro una variabile chiedo una certa quantità di memoria

In python, l'operazione di assegnazione manipola i

riferimenti, quindi x = y non crea una copia dei dati

contenuti in y, ma crea semplicemente un riferimento a y,

ovvero x punterà a y

(44)

Reference

Quando scrivo x = 4 allochiamo lo spazio di memoria

necessario per contenere l'intero 4 e poi "memorizzo

l'indirizzo della" (creo il riferimento alla) locazione di

memoria in x

(45)

Reference

Cosa succede veramente quando si incrementa x?

L'interprete recupera il valore contenuto nell'indirizzo di memoria a cui si riferisce x

Il risultato dell'operazione 3 + 1 viene calcolato e il risultato viene memorizzato in una nuova posizione di memoria

Si modifica il riferimento in x, x ora farà riferimento al nuovo indirizzo in memoria in cui è memorizzato il valore 4

Python ha un garbage collector che libera tutta la memoria allocata quando non ci sono più variabili (nomi) che fanno riferimento alle aree di memoria in questione

(46)

ESWERCIZIO MOLTIPLICAZIONE

MATRICI

(47)

Matrix

Posso utilizzare una lista di liste per memorizzare una

matrice in modo semplice

(48)

Matrix multiplication

Il prodotto è definito solo

per matrici con dimensioni

compatibili

(49)

Moltiplicazione matrice matrice

(50)

Exercise

Scrivi un programma che, dati due array 3x3 riempiti con numeri casuali, calcoli e stampi il risultato della

moltiplicazione di matrici

(51)

Matrix multiplication simple algorithm

Input: matrices A and B

Let C be a new matrix of the appropriate size

For i from 0 to n-1:

For j from 0 to p-1:

Let sum = 0

For k from 0 to m-1:

Set sum = sum + Aik × Bkj

Set Cij = sum

Return C

(52)

ESEMPIO MONTECARLO

(53)

Monte Carlo methods

Nelle reazioni nucleari, una particella veloce colpisce il nucleo di un atomo. Questo si frantuma in molte particelle, che colpiscono i nuclei di altri atomi vicini, che si frantumano a loro volta, secondo una reazione a catena, durante la quale viene rilasciata una grande quantità di energia. Il processo durerà fino a coinvolgere l'intero universo o si fermerà dopo un certo numero di reazioni?

Il metodo Monte Carlo consiste nel cercare la soluzione di un problema, rappresentandolo come un parametro di una popolazione ipotetica e nella stima di questo parametro esaminando un campione della popolazione ottenuto tramite sequenze di numeri casuali

(54)

Compute PI using MC methos

(55)
(56)

MONTECARLO E CALCOLO

DEGLI INTEGRALIL

(57)

Exercise

Stima del segueunte integrale:

2 5

sin( x)dx=cos(2)−cos(5)=−0,69981

(58)

Exercise

Set rect_count to 0 , xmin to 2.0, xmax to 5.0 , ymin to -1.0 and ymax to 1.0

for i from 0 to N :

Generate x random between xmin and xmax

Generate y random between ymin and ymax

if sin(x) > 0.0 and (y <= sin(x) and (y >= 0.0):

rect_count = rect_count + 1

else if sin(x) < 0.0 and y >= sin(x) and y <= 0.0

rect_count = rect_count – 1

integral is equal to (xmax - xmin) * (ymax - ymin) * (rect_count / N)

2 5

sin()dx=cos(2)−cos (5)=−0,69981

(59)
(60)

Vediamo un primo

esempio di utilizzo di numpy e matplotlib

(61)

ESERCIZIO

(62)

Exercise

Scrivete un programma per rappresentare la funzione cos

nell'intervallo -5.0 <x <5.0

Riferimenti

Documenti correlati

Programmare Ottenere Python Primi passi Tipi dati Funzioni Approfondimenti.. Un’introduzione

¨  Nell’input di stringhe, la scanf scarta automaticamente i white space iniziali e continua a leggere fino a quando incontra un white space (quindi non si può usare la scanf

(2) Arrays with a size of 1 along a particular dimension act like the array with the largest size along that dimension. The values of the array are assumed to be the same along

● A string is a sequence of characters, in python there are several methods / operations useful for the manipulation of strings, a string in general can be seen as an

A decorator creates a &#34;wrapper&#34; function around the provided function func. @wraps

cost = 20; // estero ancora più

cost = 10; // Hawaii più costoso else // NON FUNZIONA. cost = 20; // estero ancora

cost = 20; // estero ancora più