Python Sığ Kopya ve Derin Kopya
İstenmeyen veri dönüşümlerini önlemek için sığ kopya ile derin kopya arasındaki farkı anlamak önemlidir.
- Sığ kopya, listenin yalnızca üst düzey öğelerini kopyalar ve listede aynı nesnelere başvuran iç içe listeleri veya değiştirilebilir nesneleri etkilemez. Değiştirilebilir nesnelerde yapılan değişiklikler hem orijinal hem de kopyalanan listeyi etkiler.
- Derin kopya, iç içe listeler ve değiştirilebilir nesneler dâhil tüm öğeleri özyinelemeli olarak kopyalayarak bağımsız kopyalar oluşturur. Kopyalanan listedeki iç içe nesnelerde yapılan değişiklikler orijinal listeyi etkilemez.
Sığ kopyalama için copy.copy() işlevini, derin kopyalama içinse copy.deepcopy() işlevini kullanmanızı öneririm.
|
Yöntem |
Sığ Kopya |
Derin Kopya |
|
copy() |
✓ |
✗ |
|
list() yapıcısı |
✓ |
✗ |
|
Liste dilimleme [:] |
✓ |
✗ |
|
copy.copy() |
✓ |
✗ |
|
copy.deepcopy() |
✗ |
✓ |
Python'da İç İçe (Nested) Bir Liste Nasıl Kopyalanır
İç içe listeler veya karmaşık veri yapılarıyla çalışırken daha gelişmiş liste kopyalama yöntemleri gerekir. İç içe listeleri ele almak için farklı tekniklere bakalım.
copy.copy() kullanma
copy modülü, bir listenin sığ kopyasını oluşturan copy() işlevini sağlar. copy() işlevi, list() yapıcısını veya liste dilimlemeyi [:] kullanmaktan daha açıktır. Okunabilirliği artırmak için bir listenin sığ kopyasını oluşturduğunuzu vurgulamak istediğinizde bu yöntemi kullanabilirsiniz.
Aşağıdaki örnek, iç içe bir listenin nasıl sığ kopyalanacağını gösterir. Kod, iç içe listenin hâlâ aynı nesne olması nedeniyle [1, 2, [99, 4]] yazdıracaktır.
# Import the copy module to access the copy.copy() function
import copy
# Original list with nested structure
original_list = [1, 2, [3, 4]]
# Create a shallow copy using copy.copy()
shallow_copied_list = copy.copy(original_list)
# Modifying the nested list in the copied list
shallow_copied_list[2][0] = 99
print(original_list)
[1, 2, [99, 4]]
copy.deepcopy() kullanma
deepcopy() işlevi de copy modülünde mevcuttur. Bu işlev, listenin yanı sıra tüm iç içe nesneleri de çoğaltarak listenin derin bir kopyasını oluşturur. deepcopy() işlevi, listeler içindeki değiştirilebilir nesnelerle çalışırken önemlidir; çünkü kopyalanan listelerde yapılan değişikliklerin orijinal listeyi etkilememesini sağlar.
Aşağıdaki kod [1, 2, [3, 4]] yazdırır.
# Import the copy module to access the copy.deepcopy() function
import copy
# Original list with nested structure
original_list = [1, 2, [3, 4]]
# Create a deep copy using copy.deepcopy()
deep_copied_list = copy.deepcopy(original_list)
# Modifying the nested list in the copied list
deep_copied_list[2][0] = 99
print(original_list)
[1, 2, [3, 4]]
Sonuç
Python'da listelerin nasıl kopyalanacağını anlamak, verileri verimli şekilde işlemek için önemlidir. Bu eğitimde, Python'da bir listeyi kopyalamanın farklı yöntemlerini öğrendik ve sığ kopya ile derin kopya yöntemleri arasındaki bazı farkları inceledik. Bir veri analisti olarak, özel gereksinimlerinize göre uygun liste kopyalama tekniğini seçmek önemlidir. Kullanım senaryolarını daha iyi anlamak için ele aldığımız yöntemleri uygulamanızı öneririm.
Programlama becerilerinizi en iyi tekniklerle geliştirmek için DataCamp’in Python Programming beceri yolunu alın. Ayrıca, pratik ve işe dönük beceriler geliştirmeye devam etmenize yardımcı olması için Python Developer ve Data Analyst with Python kariyer yollarımıza da göz atmanızı öneririm.

Sıkça Sorulan Sorular
Sığ kopya ile derin kopya arasındaki fark nedir?
Sığ kopya yöntemi, orijinal listeyle aynı değerlere başvuru yaparak yeni bir liste oluşturur; böylece kopyalanan listedeki nesnelerde yapılan değişiklikler orijinal listeyi etkiler. Derin kopya ise yeni bir liste oluşturur ve değerleri orijinal listeden özyinelemeli olarak ekler; bu nedenle kopyalanan listedeki iç içe nesnelere yapılan değişiklikler orijinal listeyi etkilemez.
Python'da sığ kopya oluşturma yöntemleri nelerdir?
Bir listenin sığ kopyasını copy() yöntemi, liste dilimleme [:], list() yapıcısı veya copy modülündeki copy() işlevi ile oluşturabilirsiniz.
Python'da bir listenin derin kopyası nasıl oluşturulur?
Bir listenin derin kopyasını copy modülündeki deepcopy() işlevini kullanarak oluşturabilirsiniz.

Python listeleri, bir öğe koleksiyonunu depolamak için kullanılan güçlü veri yapılarıdır. Liste kopyalama yöntemi, verilerle çalışırken önemlidir; çünkü yinelenen liste üzerinde işlem yaparken orijinal listenin korunmasına yardımcı olur. Bu eğitimde, listeleri kopyalamanın temel ve ileri tekniklerini pratik örneklerle açıklayacağım.
Farklı örnekleri incelemeden önce, Python’un temellerini, farklı Python veri yapıları dâhil olmak üzere öğrenmek için DataCamp’in Introduction to Python kursunu almanızı öneririm. Python Hızlı Başvuru Kılavuzu (Başlangıç) da farklı işlev ve yöntemlere başvurmak için faydalı olacaktır.
"Fotokopi makinesi kullanan Python." Görsel: Dall-E.
Hızlı Cevap: Python'da Bir Liste Nasıl Kopyalanır
Aşağıdaki örnek, Python'da
copy()yöntemiyle bir listenin nasıl kopyalanacağını gösterir. Kopyalanan liste üzerinde değişiklik yapılmasına rağmen orijinal listenin nasıl değişmeden kaldığına dikkat edin. Kod[1, 2, 3]yazdıracaktır.Python'da Liste Kopyalamak İçin Daha Fazla Teknik
Python'da bir listeyi kopyalamak için farklı tekniklere bakmadan önce, neden atama operatörü
=kullanmadığımızı düşünelim.=kullanmayız çünkü bu, aslında listemizin bir kopyasını oluşturmaz. Atama operatörü yalnızca listemize bir başvuru (referans) oluşturur.Aşağıdaki örnekte, atamadan sonra
original_listvereference_to_original_listaynı listeyi ifade eder.Burada, kopyalanan listedeki herhangi bir değişiklik orijinal listeyi ve tersi şekilde etkiler. Bu değişiklikler, iki listenin aynı bellekte saklanmasından kaynaklanır. Şimdi, listemizi gerçekten kopyalamanın farklı yollarına bakalım.
copy() yöntemini kullanma
copy()yöntemi, listenin sığ bir kopyasını oluşturmak için kullanılan yerleşik bir yöntemdir.copy()yöntemi Python 3.3'ten itibaren kullanılabilir. Bu yöntem yalnızca üst düzey liste yapısını kopyalar.copy()yönteminin söz dizimi aşağıda gösterilmiştir.Aşağıdaki örnekte, kod
[1, 2, 3, 4]yazdıracaktır.list() yapıcıyı kullanma
list()yapıcısı, orijinal listedeki tüm öğeleri içerecek şekilde mevcut bir listeden yeni bir liste oluşturmak için kullanılır. Bu teknik, kopyalanan listedeki değişikliklerin orijinal listeyi etkilemeyeceği yeni bir liste nesnesi oluştururken önemlidir. Aşağıdaki kod[1, 2, 3]yazdırır.[: ] ile liste dilimleme kullanma
Liste dilimleme
[:], bir listenin sığ kopyasını oluşturmanın özlü bir yolunu sağlar. Liste dilimleme[:]yöntemi, Python’da düşük seviyede uygulandığı için etkilidir. Bu yöntemin söz dizimi aşağıdadır.Aşağıdaki kod
[1, 2, 3]yazdırır.Bu bağlamda, listedeki her şeyi dâhil etmek için liste dilimleme yöntemini kullanıyoruz; ancak başka bağlamlarda, başlangıç ve bitiş indeksleri belirtilerek alt listeler oluşturmak için de kullanılabilir.