Download in corso

Softwareone.it

Array creare e gestire liste in Python

Un array in Python è una variabile speciale, che può contenere più di un valore alla volta.

Una lista in Python è come un array in Perl 5.
In Perl 5, le variabili che memorizzano un array cominciano sempre con il carattere @; in Python, le variabili possono essere chiamate in qualsiasi modo, e Python tiene traccia del tipo di dato internamente.

Una lista in Python è molto più di un array in Java (anche se può essere usata come tale, se questo è tutto quello che volete dalla vita).

Un’analogia migliore sarebbe quella con la classe ArrayList, che può contenere oggetti di tipo arbitrario e può espandersi dinamicamente man mano che nuovi elementi vengono aggiunti.

Un array in Python può contenere molti valori con un solo nome e puoi accedere ai valori facendo riferimento a un numero indice.

Creare una Lista

Creare una lista in Python è facile; usate le parentesi quadre per racchiudere un elenco di valori separati da virgole.

>>> a = ['ciao','hello','salut','hola','olà']
>>> a
['ciao', 'hello', 'salut', 'hola', 'olà']
>>> 

Definite una lista di cinque elementi.
Notate che essi mantengono il loro ordine originale.
Questo non è un caso, poiché una lista in Python è un insieme ordinato di elementi.

Una lista può essere usata come un array il cui indice parte da zero. Il primo elemento di una lista non vuota è sempre a[0].

>>> a = ['ciao','hello','salut','hola','olà']
>>> a
['ciao', 'hello', 'salut', 'hola', 'olà']
>>> a[0]
'ciao'
>>> 

Un indice negativo accede agli elementi a partire dalla fine della lista, contando all’indietro.

L’ultimo elemento di una lista non vuota è sempre a[-1].

>>> a = ['ciao','hello','salut','hola','olà']
>>> a
['ciao', 'hello', 'salut', 'hola', 'olà']
>>> a[0]
'ciao'
>>> a[-1]
'olà'
>>> 

Affettare una Lista

Una volta che avete definito una lista, potete ottenere una parte qualsiasi sotto forma di una nuova lista.
Questa operazione si chiama affettare la lista.

>>> a[1:3]
['hello', 'salut']
>>> a[1:-1]
['hello', 'salut', 'hola']
>>> a[0:3]
['ciao', 'hello', 'salut']
>>> a[:3]
['ciao', 'hello', 'salut']
>>> a[3:]
['hola', 'olà']
>>> a[:]
['ciao', 'hello', 'salut', 'hola', 'olà']
>>> 

Potete ottenere una parte di una lista, chiamata “fetta”, specificando due indici.
Il valore di ritorno è una nuova lista che contiene tutti gli elementi della lista, in ordine, a cominciare dal primo indice della fetta.

L’affettatura di una lista funziona anche se uno o entrambi gli indici della fetta sono negativi.

L’indice delle liste comincia da zero, quindi a[0:3] restituisce i primi tre elementi della lista, cominciando da a[0] fino a a[3] escluso.

Se l’indice sinistro della fetta è 0, potete ometterlo e 0 diventa implicito. Quindi a[:3] è la stessa cosa di a[0:3], perché lo 0 iniziale è implicito.

In questa lista di cinque elementi, a[:3] restituisce i primi 3 elementi e a[3:] restituisce gli ultimi due elementi. In effetti, a[:n] restituirà sempre i primi n elementi e a[n:] restituirà il resto, a prescindere dalla lunghezza della lista.

Se entrambi gli indici della fetta vengono omessi, tutti gli elementi della lista vengono inclusi; Ma questa non è la stessa lista della variabile a_list originale.

a[:] è una notazione abbreviata per creare la copia completa di una lista.

Aggiungere elementi a una lista

Ci sono quattro modi per aggiungere un elemento a una lista.

>>> a
['ciao', 'hello', 'salut', 'hola', 'olà']
>>> a = a + ['ok']
>>> a
['ciao', 'hello', 'salut', 'hola', 'olà', 'ok']
>>> a.append('okok')
>>> a
['ciao', 'hello', 'salut', 'hola', 'olà', 'ok', 'okok']
>>> a.extend(['extend'])
>>> a
['ciao', 'hello', 'salut', 'hola', 'olà', 'ok', 'okok', 'extend']
>>> 

L’operatore + concatena liste per creare una nuova lista.

Una lista può contenere qualsiasi numero di elementi, in quanto non c’è alcun limite sulle dimensioni (a parte la memoria disponibile).

La concatenazione tra liste crea una seconda lista in memoria, quella nuova viene immediatamente assegnata alla variabile esistente.

Quindi, questa operazione è composta da due passi — concatenazione e poi assegnamento — che potrebbe (temporaneamente) consumare memoria.

Una lista può contenere elementi di ogni tipo di dato e gli elementi contenuti in una singola lista non devono per forza essere tutti dello stesso tipo; una lista può contenente una stringa, un numero in virgola
mobile e un intero.

Il metodo append() aggiunge un singolo elemento alla fine di una lista.

Le liste sono implementate come classi. “Creare” una lista vuol dire istanziare una classe.
Come tale, una lista è dotata di metodi che operano su di essa.

Il metodo extend() prende una lista come unico argomento e aggiunge ognuno degli elementi dell’argomento in coda alla lista originale.

Il metodo insert() inserisce un singolo elemento in una lista. Il primo argomento è l’indice del primo elemento nella lista che verrà spostato dalla sua posizione.

a.insert(0, valore) ha lo stesso effetto della funzione unshift() in Perl.
Aggiunge un elemento all’inizio della lista e incrementa l’indice posizionale di tutti gli altri elementi per fare spazio.

>>> a = ['a','b','c']
>>> a
['a', 'b', 'c']
>>> a.extend(['d','e','f'])
>>> a
['a', 'b', 'c', 'd', 'e', 'f']
>>> len(a)
6
>>> a[-1]
'f'
>>> a.append(['g','h','i'])
>>> a
['a', 'b', 'c', 'd', 'e', 'f', ['g', 'h', 'i']]
>>> len(a)
7
>>> 

Cercare valori in una lista

>>> a = ['casa','mare','sole']
>>> a.count('mare')
1
>>> 'casa' in a
True
>>> 'villa' in a
False
>>> a.index('sole')
2
>>> 

Come potreste aspettarvi, il metodo count() restituisce il numero di occorrenze di uno specifico valore in una lista.

Quello che vogliate sapere è se un valore è presente nella lista oppure no.

L’operatore in è leggermente più veloce rispetto al metodo count(). L’operatore in restituisce sempre True o False, senza dirvi quante volte il valore compare nella lista.

Né l’operatore in né il metodo count() vi diranno dove si trova il valore. Se avete bisogno di questa informazione, chiamate il metodo index().

Per default questo metodo cercherà nell’intera lista, anche se potete specificare come secondo argomento opzionale l’indice (a partire da 0) da cui cominciare, e come terzo argomento opzionale persino l’indice (a partire da 0) in cui terminare la ricerca.

Il metodo index() trova la prima occorrenza di un valore nella lista.

Se il valore non viene trovato nella lista il metodo index() solleverà
un’eccezione.

Questa è una differenza considerevole rispetto alla maggior parte dei linguaggi, che restituiscono un qualche indice non valido (come -1).

Rimuovere elementi da una lista

Le liste possono espandersi e contrarsi automaticamente. Finora avete visto la parte relativa all’espansione.

Esistono anche diversi modi per rimuovere elementi da una lista.

>>> a
['mare', 'sole', 'casa']
>>> a[2]
'casa'
>>> del a[2]
>>> a
['mare', 'sole']
>>> 

Potete usare l’istruzione del per cancellare uno specifico elemento da una lista.

Non conoscete l’indice posizionale? Non è un problema, perché potete anche rimuovere gli elementi tramite il loro valore.

>>> a
['mare', 'sole', 'casa', 'villa']
>>> a.remove('casa')
>>> a
['mare', 'sole', 'villa']
>>> 

Il metodo remove() prende un valore e rimuove la prima occorrenza di quel valore dalla lista.

Ancora una volta, l’indice posizionale di tutti gli elementi che seguono l’elemento cancellato verrà diminuito per “riempire il buco”.

Le liste non hanno mai buchi.

Potete chiamare il metodo remove() tutte le volte che volete, ma verrà sollevata un’eccezione se provate a rimuovere un valore che non è presente nella lista.

Il metodo pop()

Il metodo pop() rappresenta ancora un altro modo di rimuovere elementi da una lista, ma con una peculiarità.

>>> a
['mare', 'sole', 'villa']
>>> a.pop()
'villa'
>>> a
['mare', 'sole']
>>> a.pop()
'sole'
>>> a
['mare']
>>> 

Quando viene invocato senza argomenti, il metodo pop() rimuove l’ultimo elemento nella lista e restituisce il valore che ha rimosso.

Potete rimuovere elementi arbitrari da una lista passando un indice posizionale al metodo pop(). Il metodo rimuoverà quell’elemento, sposterà tutti gli elementi seguenti per “riempire il buco” e restituirà il valore che
ha rimosso.

Invocare pop() su una lista vuota solleva un’eccezione.

https://www.python.it/doc/Howtothink/Howtothink-html-it/chap08.htm

L’istruzione O Ciclo While In Python

19-10-2019

Lascia un commento

Pubblicità