[:]
crée une copie superficielle de ls
, qui détruit la référence d'origine de la nouvelle liste à ls
. Gardez à l'esprit, toutefois, que les listes imbriquées ne sont pas affectées par [:]
et que, par conséquent, copy.deepcopy
est requis.
Exemple:
s = [5, 6, 2, 4]
=>s
[5, 6, 2, 4]
new_s = s
new_s.append(100)
=>new_s
[5, 6, 2, 4, 100]
=>s
[5, 6, 2, 4, 100]
Utilisation de deepcopy
:
s = [5, 6, [5, 6, 2, 4], 4]
new_s = s[:]
new_s[2].append(45)
=>s
[5, 6, [5, 6, 2, 4, 45], 4] #both sublists are still being referenced
=>new_s
[5, 6, [5, 6, 2, 4, 45], 4]
import copy
s1 = [5, 6, [5, 6, 2, 4], 4]
new_s1 = copy.deepcopy(s1)
new_s1[2].append(100)
=>new_s1
[5, 6, [5, 6, 2, 4, 100], 4]
=>s1
[5, 6, [5, 6, 2, 4], 4]
'ls [:]' fait une copie complète de 'ls', donc ce n'est pas le même objet. Ils sont égaux, cependant: 'ls == ls [:]' – alexis
Le découpage crée une copie –
Pourquoi une copie de liste aurait-elle le même identifiant? Ensuite, ils se référeront toujours à la même liste ... –