Ana içeriğe geç

Python Liste Kopyalama: Bilmeniz Gerekenler

Python'da listeleri nasıl kopyalayacağınızı anlayın. copy() ve list() işlevlerini nasıl kullanacağınızı öğrenin. Sığ ve derin kopyalar arasındaki farkı keşfedin.
· 7 dk. oku

Yapay Zeka ile Keşfedin

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

"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.

# Define the original list
original_list = [1, 2, 3]

# Create a shallow copy of the original list
copied_list = original_list.copy()

# Modify the first element of the copied list
copied_list[0] = 99

print(original_list)
[1, 2, 3]

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_list ve reference_to_original_list aynı listeyi ifade eder.

# Create a list called original_list
original_list = [1, 2, 3]

# Create a new reference copied_list that points to the same list as original_list
reference_to_original_list = original_list

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.

new_list = original_list.copy()

Aşağıdaki örnekte, kod [1, 2, 3, 4] yazdıracaktır.

# Original list with nested structure
original_list = [1, 2, 3, 4]

# Create a shallow copy using the copy() method
shallow_copied_list = original_list.copy()

print(shallow_copied_list)
[1, 2, 3, 4]

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.

# Create a list called original_list
original_list = [1, 2, 3]

# Create a shallow copy of original_list using the list() function
copied_list = list(original_list)

# Modify the first element of copied_list
copied_list[0] = 99

print(original_list)
[1, 2, 3]

[: ] 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. 

new_list = original_list[:]

Aşağıdaki kod [1, 2, 3] yazdırır.

# Create a list called original_list
original_list = [1, 2, 3]

# Create a shallow copy of original_list using list slicing
copied_list = original_list[:]

# Modify the first element of copied_list
copied_list[0] = 99

print(original_list)
[1, 2, 3]

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.

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.

Allan Ouko

Yazar

Allan Ouko

Veri analitiği, iş zekâsı ve veri bilimi alanlarında pratik deneyime sahip Veri Bilimi Teknik Yazarı. SQL, Python, Power BI, Databricks ve veri mühendisliği üzerine, gerçek dünya analitik çalışmalarına dayanan, uygulamaya dönük ve sektöre odaklı içerikler yazıyorum. Yazılarım teknik derinlikle iş etkisi arasındaki köprüyü kurarak profesyonellerin veriyi güvenle karara dönüştürmelerine yardımcı olur.

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.

Konular

İlgili