Python/Tipi di Dati
< Python
Tipi di dato
modificaI tipi di dato messi a disposizione da Python sono i seguenti:
- Semplici:
- interi (int),
- interi lunghi (long),
- numeri in virgola mobile (float)
- numeri complessi (complex),
- valori booleani (bool)
- Sequenze:
- immutabili:
- stringhe (str),
- tuple (tuple),
- insiemi immutabili (frozenset)
- mutabili:
- liste (list),
- dizionari (dict)
- insiemi (set)
- file (file)
- immutabili:
Alcune osservazioni:
- Gli interi lunghi sono arbitrariamente grandi.
- I valori booleani sono: True e False.
- Per motivi di efficienza e di architettura del linguaggio le stringhe sono immutabili, cosicché qualsiasi operazione che in qualche modo potrebbe alterare una stringa (come ad esempio la sostituzione di un carattere) restituirà invece una nuova stringa.
- Le liste sono degli array dinamici che possono contenere dati di qualunque tipo.
- Le tuple sono come le liste ma sono immutabili.
- I dizionari contengono coppie di oggetti chiave-valore; possono essere visti come degli array indicizzati invece che da interi, da un qualunque oggetto immutabile. La chiave deve infatti essere un oggetto immutabile.
- Gli insiemi sono contenitori non ordinati di oggetti non ripetuti.
Essendo Python a tipizzazione dinamica, tutte le variabili sono in realtà semplici puntatori ad oggetto (reference), sono gli oggetti invece ad essere dotati di tipo. Ad esempio un identificatore collegato ad un intero, un istante dopo può essere collegato ad una stringa o ad un array.
In Python c'è un forte controllo dei tipi a runtime. Si ha conversione implicita solo per i tipi numerici, per cui si può ad esempio moltiplicare un numero complesso per un intero, ma non c'è conversione implicita tra altri tipi, ad es. numeri e stringhe.
Esempio
modificaNel seguente programma ci sono delle funzioni che operano conversioni di tipo.
def elementidiversi(sequenza):
"""Restituisce il numero di elementi diversi contenuti in sequenza."""
return len(set(sequenza))
def cifre(numero):
"""Restituisce la lista delle cifre di un numero."""
return [int(c) for c in str(numero)]
def divisibilepertre(num):
"""Implementa il criterio di divisibilità per 3."""
return sum(cifre(num)) % 3 == 0
def cambiabase(n, b):
"""Restituisce una stringa che rappresenta n in base b."""
if n==0:
return ""
else:
n, r = divmod(n, b)
return cambiabase(n, b) + str(r)
def test():
lista=[1, 3, 2, 1, 1, 3, 4, 2, 3]
print("Nella lista %s ci sono %s elementi diversi\n" %
(lista, elementidiversi(lista)))
stringa="ambarabacicicoco"
print("Nella stringa %s ci sono %s elementi diversi\n" %
(stringa, elementidiversi(stringa)))
n=65127842
print("Le cifre di %s sono contenute nella lista: %s\n" %
(n, cifre(n)))
numeri=(6327432954857463849473273838, 7584658546432562651111111156)
for n in numeri:
print("%s è divisibile per 3: %s\n" % (n, divisibilepertre(n)))
n=128
for base in (2, 3, 4):
print("%s in base %s è: %s" % (n, base, cambiabase(n, base)))
test()