Bazen bir kopyayı diğerini değiştirmeden değiştirebilmeniz için bir kopya gerekir. Python`un kopya oluşturmanın iki yolu vardır:
- Derin kopya
- Sığ kopya
Bu kopyaları yapmak için kullanırız.
modülünü kopyalayın. Sığ ve derin kopyalama işlemleri için kopyala
modülünü kullanıyoruz. Örneğin
# import kopya modülü
import
=
[
1
]
# sığ kopyalama için kopya kullanın
li2
=
kopyala.kopyala ( li1)
# Deepcopy için Deepcopy kullanma
li3 < /kod>
copy.deepcopy (li1)
Yukarıdaki kodda, copy ()
listenin yüzeysel bir kopyasını döndürür ve deepcopy ()
listenin derin bir kopyasını döndürür.
deepcopy
Derin Kopya — kopyalama işleminin yinelemeli olarak gerçekleştiği bir süreçtir. Bu, önce yeni bir koleksiyon nesnesi oluşturmak ve ardından bunu orijinalde bulunan alt nesnelerin kopyalarıyla tekrar tekrar doldurmak anlamına gelir. Derin kopya durumunda, bir nesnenin kopyası başka bir nesneye kopyalanır. Bu, nesnenin kopyasında yapılan herhangi bir değişikliğin orijinal nesneye yansıtılmadığı anlamına gelir. Python`da bu, deepcopy () işlevi kullanılarak yapılır.
# kopyalama işlemlerini gösteren Python kodu
# import & quot; kopyala & quot; kopyalama işlemleri için
import
kopyala
# başlatma listesi 1
li1
=
< kod sınıfı = "düz"> [ ],
4
]
# derin kopyalamak için Deepcopy kullanma
li2
=
copy.deepcopy (li1)
"Derin kopyalamadan önceki orijinal öğeler"
)
için
i
in
aralığı
(
0
,
len
(li1)):
print
(li1 [i], end
< kod sınıfı = "anahtar kelime"> =
print
(
" "
)
# yeni listeye ekleme ve öğe
# Değişiklik l2`ye yansıtılır
print
(
"Derin kopyalamadan sonraki yeni öğe listesi "
)
için
i
aralık
(li2 [i], end
=
""
)
""
)
# Değişiklik Orijinal listeye yansıtılmaz
# derin bir kopya gibi
yazdır
(
"Derin kopyalamadan sonraki orijinal öğeler"
)
for
i
in
range
(
0
,
len
Çıkış:
Orijinal öğe s derin kopyalamadan önce 1 2 [3, 5] 4 Derin kopyalamadan sonraki yeni öğe listesi 1 2 [7, 5] 4 Derin kopyalamadan sonraki orijinal öğeler 1 2 [3, 5] 4
In yukarıdaki örnekte, listede yapılan bir değişiklik diğer listeleri etkilemedi , bu da derin kopyalama listesini gösterir.
Sığ kopyalama
Sığ kopyalama, yeni bir koleksiyon nesnesi oluşturmak ve ardından onu bulunan alt nesnelere referanslarla doldurmak anlamına gelir. orjinalinde. Kopyalama işlemi kendini tekrar etmez ve bu nedenle alt nesnelerin kendi kopyalarını oluşturmaz. Sığ bir kopya durumunda, bir nesneye yapılan referans başka bir nesneye kopyalanır. Bu, nesnenin kopyasında yapılan tüm değişikliklerin orijinal nesneye yansıtıldığı anlamına gelir. Python bunu "kopyala () " işleviyle yapar.
|
Çıkış:
Sığ kopyalamadan önceki orijinal öğeler 1 2 [3, 5] 4 Yüzeysel kopyalamadan sonraki orijinal öğeler 1 2 [7, 5] 4
Yukarıdaki örnekte, listesinde yapılan değişiklik listenin kopyalandığını belirterek başka bir listede etkili oldu.
Önemli noktalar:
Sığ ve derin kopyalar arasındaki fark yalnızca bileşik nesneler (içeren nesneler) için geçerlidir. listeler veya sınıf örnekleri gibi diğer nesneler):
- Sığ kopya yeni bir bileşik nesne oluşturur ve ardından (mümkün olduğunca) orijinalde bulunan nesnelere referanslar ekler.
- Derin bir kopya, yeni bir bileşik nesne oluşturur ve ardından orijinalde bulunan nesnelerin kopyalarını yinelemeli olarak buna ekler.