CodeGym /Corsi /Python SELF IT /Lavoro pratico con le liste

Lavoro pratico con le liste

Python SELF IT
Livello 7 , Lezione 9
Disponibile

9.1 Creare una copia di una lista

Creare una copia di una lista in Python è un compito importante, che può essere necessario per evitare modifiche inattese nei dati mentre si manipolano le liste. È importante comprendere la differenza tra copia superficiale (shallow) e copia profonda (deep).

Copia superficiale

Una copia superficiale crea una nuova lista, ma gli elementi rimangono gli stessi (se gli elementi sono riferimenti, vengono copiati come riferimenti). Questo può essere fatto in diversi modi:

Usando la funzione list():


original = [1, 2, 3]
copy = list(original)

Uso dello slicing:


original = [1, 2, 3]
copy = original[:]

Metodo copy():

Copia profonda

La copia profonda crea una nuova lista, in cui vengono create copie di tutti gli oggetti inclusi. Questo è particolarmente importante quando le liste contengono altri tipi di dati mutabili, come altre liste. Per questo si utilizza il modulo copy:


import copy
original = [[1, 2], [3, 4]]
deep_copy = copy.deepcopy(original)

Quando utilizzare ciascun metodo

La copia superficiale è più veloce e adatta quando gli elementi della lista sono semplici o non necessitano di duplicazione (ad esempio, stringhe o numeri). La copia profonda è necessaria quando gli elementi della lista sono collezioni mutabili o quando le modifiche nella copia non devono riflettersi sull'originale.

9.2 Rimozione di un elemento da una lista

C'è un compito semplice e complesso allo stesso tempo: la rimozione di elemento(i) da una lista in un ciclo.

Quando attraversiamo una lista con un ciclo for, la lista restituisce un oggetto figlio speciale — un iteratore, che viene utilizzato dal ciclo for, per percorrere tutti i suoi elementi. E se nel processo di utilizzo dell'iteratore [da parte del ciclo for] si elimina un elemento dalla lista, l'iteratore potrebbe non funzionare correttamente.

Se hai eliminato il 3° elemento, il 4° diventerà automaticamente il 3°. Ma il ciclo for, tramite l'iteratore, passerà al nuovo 4° elemento, che precedentemente era il 5°. Il 4° elemento quindi verrà saltato.

Ecco alcuni metodi per rimuovere gli elementi in modo sicuro:

Uso del metodo remove()

Se sai esattamente quale elemento rimuovere, puoi usare remove() all'interno del ciclo. Tuttavia, può essere inefficiente se ci sono molti elementi, poiché ogni chiamata a remove() cerca l'elemento prima di rimuoverlo, il che rallenta l'esecuzione.

Creazione di una nuova lista

Un modo più sicuro è creare una nuova lista solo con gli elementi che si desidera mantenere:


original_list = [1, 2, 3, 4, 5, 6]
new_list = [x for x in original_list if x % 2 != 0]  # manteniamo solo i numeri dispari

Uso degli indici

Puoi usare un ciclo for con un indice inverso, per rimuovere gli elementi senza rischiare di saltare:


for i in range(len(original_list) - 1, -1, -1):
    if original_list[i] % 2 == 0:  # condizione per la rimozione
        del original_list[i]

Quando attraversiamo la lista dalla fine, eliminando elementi cambiano solo gli indici degli elementi già attraversati.

Uso di una copia della lista:

Poniamo che vuoi rimuovere tutti i numeri negativi da una lista:


numbers = [1, -1, 2, -2, 3, -3]
# Creiamo una copia della lista per un'iterazione sicura
for number in numbers.copy():
    if number < 0:
        numbers.remove(number)
print(numbers) # Stampa [1, 2, 3]

9.3 Unione di liste

Spesso è necessario unire due o più liste in una. Questo può essere fatto in diversi modi, ognuno dei quali è adatto a diversi compiti e ha le sue peculiarità.

Uso dell'operatore +

Il modo più semplice per unire due liste è usare l'operatore +. È un metodo diretto e intuitivo:


list1 = [1, 2, 3]
list2 = [4, 5, 6]
combined_list = list1 + list2
print(combined_list)  # Stampa [1, 2, 3, 4, 5, 6]

Metodo extend()

Il metodo extend() modifica la prima lista, aggiungendo alla fine tutti gli elementi della seconda lista. Questo cambia la lista originale:


list1 = [1, 2, 3]
list2 = [4, 5, 6]
list1.extend(list2)
print(list1)  # Stampa [1, 2, 3, 4, 5, 6]

List Comprehensions

Le list comprehensions possono essere utilizzate per creare nuove liste combinando elementi da diverse liste in una lista complessa:


list1 = [1, 2, 3]
list2 = [4, 5, 6]
combined_list = [item for sublist in [list1, list2] for item in sublist]
print(combined_list)  # Stampa [1, 2, 3, 4, 5, 6]

Metodo append()

Puoi aggiungere tutti gli elementi della seconda lista alla prima uno per uno. Beh, come opzione.


list1 = [1, 2, 3]
list2 = [4, 5, 6]
for x in list2:
    list1.append(x)
print(list1)  # Stampa [1, 2, 3, 4, 5, 6]

In pratica, questo è tutto quello che volevo raccontarti sulle liste 😊

2
Compito
Python SELF IT, livello 7, lezione 9
Bloccato
Ordinamento senza ordinamento
Ordinamento senza ordinamento
2
Compito
Python SELF IT, livello 7, lezione 9
Bloccato
Puliamo la lista
Puliamo la lista
1
Sondaggio/quiz
Liste in Python, livello 7, lezione 9
Non disponibile
Liste in Python
Liste in Python
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION