Ottava parte del corso python
Ad esempio, voglio estrarre dalla lista solamente i valori che vanno dal primo al terzo.
Questo perchè in python c'è un sistema esclusivo , ovvero il numero a destra è escluso dalla selezione. Per cui per prendere le prima 3 cifre va messo come secondo numero quello successivo, non compreso.
Vediamo quindi che in pratica abbiamo due valori dentro la parentesi quadra [inizio:fine] (escluso)
Se il primo numero è compreso, ovvero l'indice zero, si può anche omettere
Se invece proviamo a mettere solo il numero a sinistra (inizio) e omettere quello di fine (a destra) vediamo cosa succede:
Ovvero stampa a partire dall'elemento di indice 3 e va fino alla fine.
vediamo una carrellata di esempi con altre varianti:
E la versione senza inizio e fine, solo con i due punti, cosa fa? Fa una copia. Vediamo un esempio:
Adesso abbiamo copiato la lista. Se aggiungo un elemento alla lista2, finira in lista1 o in lista2? Vediamo. Aggiungiamo 13 alla lista 1 e 14 alla lista2, vediamo dove vanno.
Quindi abbiamo visto come mettere [:] senza inizio e fine, copia la listta e ne crea una totalmente nuova, uguale ma non coincidente con quella di prima, è proprio un nuovo oggetto "lista".
DATATYPES
Ecco i datatypes disponibili:
Numbers
Bool
List
Tuple
Strings
Set
Dictionary
LIST
Usiamo sempre la variabile "lista1" come lista
>>> lista1 = [0,1,2,3, 4, 5, 6, 7, 8, 9, 10, 11, 12]Adesso vediamo come "fare a fette" (slice) la lista. (pensate ad uan fetta di pizza)
Ad esempio, voglio estrarre dalla lista solamente i valori che vanno dal primo al terzo.
Sapendo che il primo valore ha indice 0, devo estrarre quindi i valori con indice: 0,1 e 2
Proviamo:
>>> lista1 = [0,1,2,3, 4, 5, 6, 7, 8, 9, 10, 11, 12] >>> print(lista1[0:2]) >>> [0,1]Che però non è il risultato sperato!
Questo perchè in python c'è un sistema esclusivo , ovvero il numero a destra è escluso dalla selezione. Per cui per prendere le prima 3 cifre va messo come secondo numero quello successivo, non compreso.
>>> lista1 = [0,1,2,3, 4, 5, 6, 7, 8, 9, 10, 11, 12] >>> print(lista1[0:3]) >>> [0,1,2]Ecco fatto.
Vediamo quindi che in pratica abbiamo due valori dentro la parentesi quadra [inizio:fine] (escluso)
Se il primo numero è compreso, ovvero l'indice zero, si può anche omettere
>>> lista1 = [0,1,2,3, 4, 5, 6, 7, 8, 9, 10, 11, 12] >>> print(lista1[:3]) >>> [0,1,2]Che è uguale all'esempio di prima.
Se invece proviamo a mettere solo il numero a sinistra (inizio) e omettere quello di fine (a destra) vediamo cosa succede:
>>> lista1 = [0,1,2,3, 4, 5, 6, 7, 8, 9, 10, 11, 12] >>> print(lista1[3:]) >>> [3, 4, 5, 6, 7, 8, 9, 10, 11, 12]la versione senza inizio e fine, solo con i due punti, cosa fa? Fa una copia. Vediamo un esempio: lista1 = [0,1,2,3, 4, 5, 6, 7, 8, 9, 10, 11, 12] lista2 = lista1[:] Adesso abbiamo copiato la lista. Se aggiungo un elemento alla lista2, finira in lista1 o in lista2? Vediamo. Aggiungiamo 13 alla lista 1 e 14 alla lista2, vediamo dove vanno. lista1 = [0,1,2,3, 4, 5, 6, 7, 8, 9, 10, 11, 12] lista2 = lista1[:] lista1.append(13) lista2.append(14) print("LISTA1:") print(lista1) print("LISTA2:") print(lista2) >>> LISTA1: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] LISTA2: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14] Quindi abbiamo visto come mettere [:] senza inizio e fine, copia la listta e ne crea una totalmente nuova, uguale ma non coincidente con quella di prima, è proprio un nuovo oggetto "lista".
vediamo una carrellata di esempi con altre varianti:
>>> lista1 = [0,1,2,3, 4, 5, 6, 7, 8, 9, 10, 11, 12] >>> print(lista1[3:-1]) >>> [3, 4, 5, 6, 7, 8, 9, 10, 11]^ (Va dall'elemento di indice 3 al -1)
>>> lista1 = [0,1,2,3, 4, 5, 6, 7, 8, 9, 10, 11, 12] >>> print(lista1[-3:-1]) >>> [10, 11]^ (Va dall'elemento di indice -3 al -1)
>>> lista1 = [0,1,2,3, 4, 5, 6, 7, 8, 9, 10, 11, 12] >>> print(lista1[:-3]) >>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]^ (Va fino all'elemento di indice -3 )
E la versione senza inizio e fine, solo con i due punti, cosa fa? Fa una copia. Vediamo un esempio:
lista1 = [0,1,2,3, 4, 5, 6, 7, 8, 9, 10, 11, 12] lista2 = lista1[:]
Adesso abbiamo copiato la lista. Se aggiungo un elemento alla lista2, finira in lista1 o in lista2? Vediamo. Aggiungiamo 13 alla lista 1 e 14 alla lista2, vediamo dove vanno.
lista1 = [0,1,2,3, 4, 5, 6, 7, 8, 9, 10, 11, 12] lista2 = lista1[:] lista1.append(13) lista2.append(14) print("LISTA1:") print(lista1) print("LISTA2:") print(lista2) >>> LISTA1: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] LISTA2: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14]
Quindi abbiamo visto come mettere [:] senza inizio e fine, copia la listta e ne crea una totalmente nuova, uguale ma non coincidente con quella di prima, è proprio un nuovo oggetto "lista".
Commenti
Posta un commento