Riferimenti: SoftPython - sequenze 1
Esc
Summer School Data Science 2023 - Modulo 1 informatica: Moodle
Docente: David Leoni david.leoni@unitn.it
Esercitatore: Luca Bosotti luca.bosotti@studenti.unitn.it
sequenza = ['a','r','p','a']
iteratore = iter(sequenza)
iteratore
<list_iterator at 0x7f60e2d08490>
Per attivare:
next(iteratore)
'a'
next(iteratore)
'r'
next(iteratore)
'p'
next(iteratore)
'a'
next(iteratore)
---------------------------------------------------------------------------
StopIteration Traceback (most recent call last)
/tmp/ipykernel_12808/2464660659.py in <module>
----> 1 next(iteratore)
StopIteration:
sequenze materializzate
sequenze non materializzate
range
range(100)
range(0, 100)
Come materializzare?
list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
DOMANDA: Occupa più memoria l’oggetto a
o l’oggetto b
?
a = range(10)
b = range(10000000)
DOMANDA: Occupa più memoria l’oggetto a
o l’oggetto b
?
a = list(range(10))
b = list(range(10000000))
r = range(4)
iteratore = iter(r)
for elemento in iteratore:
print(elemento)
0 1 2 3
for elemento in iteratore:
print(elemento) # stampa qualcosa?
..neanche implicitamente!
r = range(4)
iteratore = iter(r)
prima = list(iteratore)
seconda = list(iteratore)
prima
[0, 1, 2, 3]
seconda
[]
sequenza = ['g','i','a','r','a']
iteratore = reversed(sequenza) # qua NON serve iter!
iteratore # E' GIA' UN ITERATORE!
<list_reverseiterator at 0x7f60e2d15f90>
Scorriamo con il for
for elemento in reversed(sequenza):
print(elemento)
a r a i g
Solo se proprio necessario:
list(iteratore)
['a', 'r', 'a', 'i', 'g']
sorted(sequenza)
$\neq$ metodo lista.sort()
Crea una sequenza di tuple da due sequenze di partenza
maschi = ["Topolino", "Paperino", "Paperone"]
femmine = ["Minnie", "Paperina", "Brigitta"]
zip(maschi, femmine)
<zip at 0x7f60e2d13e10>
for coppia in zip(maschi, femmine):
print(coppia)
('Topolino', 'Minnie') ('Paperino', 'Paperina') ('Paperone', 'Brigitta')
Materializziamo:
list(zip(maschi, femmine))
[('Topolino', 'Minnie'), ('Paperino', 'Paperina'), ('Paperone', 'Brigitta')]
Abbiamo questa sequenza:
personaggi = ["Topolino", "Paperino", "Paperone"]
Vogliamo creare una NUOVA lista tutta in maiuscolo. Prova con questa sintassi:
[ESPRESSIONE_TRASFORMAZIONE for VARIABILE in SEQUENZA]
ESPRESSIONE_TRASFORMAZIONE deve generare un valore
[nome.upper() for nome in personaggi]
['TOPOLINO', 'PAPERINO', 'PAPERONE']
personaggi # l'originale è preservato
['Topolino', 'Paperino', 'Paperone']
Abbiamo questa verdura:
carote = [8,4,3,6,2,7]
Vogliamo vendere le carote di almeno 5 cm creando una NUOVA lista.
Come facciamo con questa sintassi?
[ESPRESSIONE for ELEMENTO in SEQUENZA if CONDIZIONE]
vendere = [ m for m in carote if m >= 5 ]
print(vendere)
[8, 6, 7]
print(carote) # originale inalterato
[8, 4, 3, 6, 2, 7]