Python versione Bignami - Sequenze
Stringhe
Le stringhe sono considerate sequenze immutabili di caratteri.
Tuple
La tupla è una sequenza di valori non modificabile.
- Creazione:
x = (a, b, c)
oppurex = (a,)
oppurex = a, b, c
- Creazione da altri valori:
x = tuple(val)
Funzioni che restituiscono piú di un valore:
def divisione_intera(a, b):
"Dati due numeri restituisce il quoziente e il resto"
return int(a) / int(b), int(a) % int(b)
q, r = divisione_intera(5, 3)
Generatori che generano piú valori alla volta:
def leggi_configurazione(filename):
"Estrae delle coppie 'nome = valore' da un file"
file = open(filename, "r")
for line in file:
name, val = line.split(' = ')
yield name, val
for name, val in leggi_configurazione():
...
Liste
La lista è una sequenza di valori modificabile.
- Creazione:
x = [a, b, c]
,x = [a]
- Creazione da altri valori:
x = list(val)
- Sostituzione di un valore:
x[2] = 2
- Sostituzione di una sottolista:
x[2:4] = [3]
,x[2:4] = [1, 2, 3, 5]
,x[2:4] = (1, 2)
- Cancellazione di una sottolista:
del x[3]
,del x[3:5]
- Aggiunge un elemento in fondo:
x.append(valore)
- Aggiunge vari elementi in fondo:
x.extend(valori)
Esempio:
>>> x = [1, 2, 3]
>>> x
[1, 2, 3]
>>> x.append(4)
>>> x
[1, 2, 3, 4]
>>> x.append([5,6])
>>> x
[1, 2, 3, 4, [5, 6]]
>>> del x[4]
>>> x
[1, 2, 3, 4]
>>> x.extend([5,6])
>>> x
[1, 2, 3, 4, 5, 6]
- Conta elementi di valore dato:
s.count(x)
- Restituisce l'indice del primo elemento di valore dato:
s.index(x)
- Inserisce un elemento alla posizione data:
s.insert(i, x)
- Toglie l'ultimo elemento e lo restituisce:
x = s.pop()
- Toglie il primo elemento e lo restituisce:
x = s.pop(0)
- Toglie il primo elemento di valore dato:
s.remove(x)
- Inverte l'ordine degli elementi nella lista:
s.reverse()
- Ordina la lista:
s.sort()
Operazioni
Queste operazioni sono valide per tutti i tipi di sequenze:
- Appartenenza:
x in seq
,x not in seq
- Concatenazione:
s = seq1 + seq2
- Replicazione:
seq * 3
- Numero di elementi:
n = len(seq)
- Elemento minimo:
x = min(seq)
- Elemento massimo:
x = max(seq)
Accesso agli elementi
- Terzo elemento della sequenza:
seq[2]
(il primo elemento ha indice 0) - Ultimo elemento della sequenza:
seq[-1]
(i numeri negativi partono dal fondo) - Sottosequenza tra a (incluso) e b (escluso):
seq[a:b]
,seq[2:4]
,seq[-5:-3]
,seq[3:-2]
- Sottosequenza tra a (incluso) e b (escluso) prendendo un valore ogni 3:
seq[a:b:3]
Iterazione
Ogni sequenza è iterabile:
>>> a = [1, 2, 3]
>>> for i in a: print i
1
2
3
Assegnamento a piú variabili
I valori in una sequenza possono essere assegnati a una sequenza di variabili
x, y = (1, 2)
x, y = [1, 2]
(x, y) = [1, 2]
[x, y] = [1, 2]
Funziona anche con le stringhe:
>>> a, b, c, d = "ciao"
>>> a
'c'
>>> b
'i'
>>> c
'a'
>>> d
'o'
Esempio di iterazione su una lista di coppie:
>>> a = [ (1, 2), (2, 3), (3, 4) ]
>>> for x, y in a: print x, ":", y
...
1 : 2
2 : 3
3 : 4
Funzioni che lavorano con liste e sequenze
enumerate(seq)
restituisce un generatore che genera coppie (indice, elemento di seq)map(funzione, lista)
restituisce una lista che contiene, per ogni elementoi
dilista
, il valorefunzione(i)
map(funzione, seq1, seq2...)
restituisce una lista che contiene, per ogni elementoi1
diseq1
,i2
diseq2
e cosí via, il valorefunzione(i1, i2...)
max(seq)
restituisce il valore massimo nella sequenzamin(seq)
restituisce il valore minimo nella sequenzasum(seq)
restituisce la sommatoria degli elementi di seqreduce(fun, seq)
sei1...in
sono gli elementi diseq
, calcolar2 = fun(i1, i2)
, poir3 = fun(r2, i3)
, poir3 = fun(r3, i4)
fino arn
, e restituiscern
reduce(fun, seq, init)
sei1...in
sono gli elementi diseq
, calcolar1 = fun(init, i1)
, poir2 = fun(r1, i2)
, poir2 = fun(r2, i3)
fino arn
, e restituiscern
reversed(seq)
restituisce un generatore che genera gli elementi diseq
in ordine inversosorted(seq)
restituisce una lista con gli elementi ordinati di seqzip(seq1, seq2...)
restituisce una lista che contiene, per ogni elementoi1
diseq1
,i2
diseq2
e cosí via, la tupla(i1, i2, ...)
Funzioni che lavorano solo con le liste
l = filter(funzione, lista)
restituisce una lista che contiene tutti gli elementii
dilista
per i qualifunzione(i)
restituisce Truel = range([start,] stop [, step])
restituisce una lista che contiene tutti i numeri da start (0 se manga) a stop (escluso), eventualmente uno ogni step.
Link
- Sequenze nella Python Library Reference
- Elenco delle funzioni built-in che contiene anche le funzioni predefinite sulle sequenze.