Python`a kopyala (Derin Kopyalama ve Sığ Kopyalama)

| | | |

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 kopyala


# listeyi başlat 1

li1 = [ 1 , 2 , [ 3 , 5 ], 4 ]


# 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"> [ 1 , 2 , [ 3 , 5 ], 4 ]


# derin kopyalamak için Deepcopy kullanma

li2 = copy.deepcopy (li1)


# orijinal liste öğesi

yazdır ( "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

li2 [ 2 ] [ 0 ] = 7


# Değişiklik l2`ye yansıtılır

print ( "Derin kopyalamadan sonraki yeni öğe listesi " )

için i aralık ( 0 , < kod sınıfı ="işlevler "> len (li1)):

yazdır (li2 [i], end = "" )


yazdır ( "" )


# 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 (li1)):

yazdır (li1 [i], bitiş = "" )

Çı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.


# Kopyalama işlemlerini gösteren Python kodu


# içe aktar & quot; kopyala & quot; kopyalama işlemleri için

import kopyala


# başlatma listesi 1

li1 = < kod sınıfı = "düz"> [ 1 , 2 , [ 3 , 5 ], 4 ]


# sığ kopyalama için kopya kullanın

li2 = copy.copy (li1)


# orijinal liste öğesi

print ( " Sığ kopyalamadan önceki orijinal öğeler " )

i aralığında ( 0 , len (li1)):

print (li1 [i], end = "" )


yazdır ( "" )


# yeni listeye ekle ve öğe

li2 [ 2 ] [ 0 ] = 7


# değişikliğin yansıtılıp yansıtılmadığını kontrol edin

print ( "Sığ kopyalamadan sonra orijinal öğeler" )

için < kod sınıfı = "düz"> i aralığında ( 0 , len (li1 )):

yazdır (li1 [i], son = " " )

Çı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.

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers

News


Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method