Note sui tipi di dati
Sommario
La funzione
type(oggetto) restituisce il
tipo dell'oggetto passato come argomento. In Python
è bene pensare a
qualsiasi cosa elaborabile dal
programma come ad un
oggetto.
Anche un semplice numero come 150 non è solo un valore, ma un oggetto
(di tipo numerico), una qualsiasi stringa, anche di lunghezza zero
(stringa nulla), è un oggetto complesso (di tipo stringa),
dotato di molti metodi interni
(
metodi di stringa).
Python è totalmente orientato agli oggetti, pur gestendoli in un modo
talmente semplice per il programmatore, che all'inizio questi si possono anche ignorare.
Sono quindi oggetti anche i tipi di dati più complessi (liste, tuple, dizionari),
le istanze di classe (già definite o scritte dal programmatore),
e addirittura le funzioni stesse.
In Python l'equivalente di subroutine / procedure / funzioni degli altri linguaggi
sono sempre e comunque funzioni, che possono o meno accettare argomenti e possono
o meno restituire dei valori (oggetti), ma i nomi stessi delle funzioni sono solo identificatori
dell'oggetto funzione, che pertanto può anche essere passato come argomento ad
altre funzioni, come un qualsiasi altro tipo di oggetto.
Questo uso assolutamente omogeneo di qualsiasi tipo di oggetto (numeri, stringhe,
strutture dati, istanze di classe e funzioni), unito alla
non necessità
di dover dichiarare esplicitamente i tipi o gestire allocazioni/deallocazioni
di memoria o gestire i puntatori (tipizzazione dinamica e gestione della memoria automatica)
rendono il Python allo stesso tempo elementare nella sintassi e nell'uso, ma anche
potentissimo. Inoltre non vi è alcun limite nell'occupazione di memoria se non le dimensioni
stesse della memoria fisica e virtuale fornite dal sistema operativo, il che sui computer
attuali vuol dire ormai diverse centinaia di Megabyte!
Tipi elementari
Tipo di Elementi Tipo Tipo
oggetto mutabili sequenza mappabile
----------------------------------------------------------------
Numeri (interi/float/complessi)
----------------------------------------------------------------
Stringhe si
----------------------------------------------------------------
Liste si si
----------------------------------------------------------------
Tuple si
----------------------------------------------------------------
Dizionari si si
----------------------------------------------------------------
Strutture dati, liste e loro metodi, tuple, insiemi, dizionari
I tipi sequenza sono iterabili con FOR
Nell'iterazione alla variabile z vengono assegnati
di volta in volta i singoli elementi della sequenza a
partendo dal primo a sinistra
(in questo caso a è una stringa per cui i singoli elementi
sono i singoli caratteri della stringa stessa).
a="STRINGA"
for z in a:
print z
Il risultato è:
S
T
R
I
N
G
A
Indici
Il primo elemento di ogni tipo sequenza
ha indice 0, l'ultimo elemento ha indice
len(sequenza)-1.
Array e liste
In python gli array si possono realizzare con le
liste.
Ogni elemento di una lista può contenere oggetti di qualsiasi tipo, anche
diverso tra loro, comprese altre liste.
Una lista può estendersi dinamicamente
a destra con il metodo
nomelista.append(oggetto). Una lista può
anche essere vuota.
a=[0]*100 # array di 100 interi
a=[[0]*5 for i in range(10)] # array 10*5 interi
a=[[[0]*5 for i in range(10)] for i in range(100)] # array 100*10*5 interi
a[x][y][z]=150 con x da 0 a 99, y da 0 a 9, z da 0 a 4
Oppure si può usare un array "flat":
a=[0]*(100*10*5) # array di 5000 interi
a[(50*x)+(5*y)+z] # accesso all'elemento x,y,z (0..99),(0..9),(0..4)
Per lavorare con gli array di tipi omogenei vedere anche il modulo
[
array]