Copia lista in Python

Azaz Farooq 30 gennaio 2023
  1. Copia lista in Python usando il metodo copy()
  2. Copia lista in Python utilizzando il metodo di suddivisione
  3. Copia lista in Python usando la funzione list()
  4. Copiare la lista in Python usando il metodo di comprensione della lista
  5. Copia lista in Python usando il metodo copy.copy()
  6. Copia profonda dell’lista Python e copia superficiale
Copia lista in Python

Una lista è un tipo di dati flessibile disponibile in Python ed è racchiuso tra parentesi quadre [] con valori separati da virgole. I valori nell’lista possono essere diversi tipi di dati. L’indicizzazione dell’lista inizia da 0 e può essere concatenata e suddivisa in sezioni. I valori di lista possono essere copiati come un nuovo valore di lista utilizzando diverse funzioni incorporate.

Questo articolo introdurrà diversi metodi per copiare una lista in Python.

Copia lista in Python usando il metodo copy()

Il modo più diretto per copiare una lista Python è attraverso il metodo copy(). Possiamo trovare uno scenario in cui vogliamo fare una copia dell’lista. Il segno di uguale = può essere utilizzato per costruire un duplicato di una lista. Il nuovo lista sarà, tuttavia, collegato a quello esistente. Significa che anche il nuovo lista verrà modificato se aggiorni l’lista originale. Il nuovo lista si riferisce a un elemento simile al vecchio lista.

Una copia di una lista esistente viene generata dal metodo list copy(). Il metodo copy() non accetta alcun parametro.

Facciamo un esempio di nomi di frutta come una lista Python. Il nuovo lista copierà tutti i nomi di frutta presenti nell’lista precedente. Il codice di esempio è il seguente.

fruits_spring = ["carrots", "kiwi", "grapes", "cherry"]
fruits_summer = fruits_spring.copy()
print(fruits_summer)

Produzione:

['carrots', 'kiwi', 'grapes', 'cherry']

Copia lista in Python utilizzando il metodo di suddivisione

In Python, l’affettatura è un metodo che usiamo per estrarre oggetti da una lista. Possiamo recuperare singoli oggetti, diversi elementi o tutti gli elementi contenuti in una lista utilizzando il metodo di suddivisione.

Usiamo l’esempio sopra per illustrare come possiamo copiare una lista usando l’affettatura.

Di seguito viene fornito il codice di esempio completo.

fruits_spring = ["carrots", "kiwi", "grapes", "cherry"]
fruits_summer = fruits_spring[:]
print(fruits_summer)

Produzione:

['carrots', 'kiwi', 'grapes', 'cherry']

Utilizza il modulo di clonazione, i due punti racchiusi tra parentesi quadre ([:]). Questo processo genera una replica del vecchio lista.

Copia lista in Python usando la funzione list()

Possiamo anche costruire una copia di una lista in Python usando la funzione list(). La funzione list() accetta un parametro: l’oggetto o gli oggetti che vorresti convertire in una lista.

Usiamo l’esempio del nostro stand di frutta per dimostrare questo approccio.

fruits_spring = ["carrots", "kiwi", "grapes", "cherry"]
fruits_summer = list(fruits_spring)
print(fruits_summer)

Produzione:

['carrots', 'kiwi', 'grapes', 'cherry']

Copiare la lista in Python usando il metodo di comprensione della lista

Questo approccio utilizza la comprensione delle liste. Itera attraverso tutti gli elementi della lista esistenti tramite il cicli for e aggiunge i nuovi elementi della lista.

Il codice di esempio completo è dato come:

fruits_spring = ["carrots", "kiwi", "grapes", "cherry"]
fruits_summer = [i for i in fruits_spring]
print(fruits_summer)

Produzione:

['carrots', 'kiwi', 'grapes', 'cherry']

Copia lista in Python usando il metodo copy.copy()

Possiamo anche usare il metodo copy() nel modulo copy per copiare una lista Python.

Il codice di esempio completo è dato come:

import copy

fruits_spring = ["carrots", "kiwi", "grapes", "cherry"]

fruits_summer = copy.copy(fruits_spring)

print(fruits_summer)

Produzione:

['carrots', 'kiwi', 'grapes', 'cherry']

Copia profonda dell’lista Python e copia superficiale

Tutti i metodi sopra introdotti sono copie superficiali. La copia superficiale significa che se l’elemento dell’lista è modificabile e questo elemento viene modificato nell’lista originale, questa modifica si rifletterà anche nell’lista copiato. La copia superficiale copia solo il puntatore o il riferimento agli elementi dell’lista.

original_list = [["carrots", "apple"], "kiwi", "grapes", "cherry"]

print("The original list is")
print(original_list)

copied_list = original_list.copy()

original_list[0][0] = "banana"
original_list[0][1] = "apple"
original_list[1] = "orange"

print("The original list after modification is")
print(original_list)
print("The copied list is")
print(copied_list)

Produzione:

The original list is
[['carrots', 'apple'], 'kiwi', 'grapes', 'cherry']
The original list after modification is
[['banana', 'apple'], 'orange', 'grapes', 'cherry']
The copied list is
[['banana', 'apple'], 'kiwi', 'grapes', 'cherry']

Anche il primo elemento della lista originale è una lista, che è modificabile. Quando ne modifichiamo il contenuto, viene modificato l’elemento corrispondente nell’lista copiato. Nel frattempo, il secondo elemento dell’lista originale è un oggetto immutabile, quindi la sua modifica non si rifletterà nell’lista copiato.

La copia profonda, a differenza della copia superficiale, copia gli oggetti nell’lista originale in modo ricorsivo nel nuovo lista. Quindi la modifica nell’lista originale non si rifletterà nell’lista copiato. Il metodo deepcopy() del modulo copy esegue l’operazione di copia profonda.

import copy

original_list = [["carrots", "apple"], "kiwi", "grapes", "cherry"]

print("The original list is")
print(original_list)

copied_list = copy.deepcopy(original_list)

original_list[0] = ["banana", "apple"]
original_list[1] = "orange"

print("The original list after modification is")
print(original_list)
print("The copied list is")
print(copied_list)

Produzione:

The original list is
[['carrots', 'apple'], 'kiwi', 'grapes', 'cherry']
The original list after modification is
[['banana', 'apple'], 'orange', 'grapes', 'cherry']
The copied list is
[['carrots', 'apple'], 'kiwi', 'grapes', 'cherry']

Articolo correlato - Python List