Berk Akademi
Birebir ders başvurusu Ücretsiz ön görüşme Ana Sayfa

Python list append() ve extend() Farkı Nedir?

python-list-append-extend-farki-nedir
Bu yazıda neler var?
  1. append() ve extend() arasındaki temel fark nedir?
  2. Aynı listeyle append() ve extend() çıktısını karşılaştır
  3. Tek değer, liste ve metin eklerken hangi sonuç oluşur?
  4. Beklenen ve gerçek çıktı farklıysa nasıl teşhis edilir?
  5. append() mı extend() mi? Hızlı seçim kontrolü
  6. Sık Sorulan Sorular

Python list append() ve extend() farkı, eklenen değerin listenin içine nasıl yerleştirildiğiyle ilgilidir. append() verilen değeri tek bir öğe olarak listenin sonuna ekler, extend() ise verilen iterable içindeki öğeleri listeye ayrı ayrı ekler.

append() tek öğe ekler, extend() iterable içindeki öğeleri listeye dağıtır. Iterable, öğeleri sırayla gezilebilen yapı demektir. Listeler ve metinler iterable yapılara örnektir. Python öğrenmeye yeni başlıyorsan konunun temellerini ücretsiz Sıfırdan Temel Python video eğitimi ile pekiştirebilirsin.

append() ve extend() arasındaki temel fark nedir?

append() metoduna bir liste verdiğinde, o liste dıştaki listenin tek bir öğesi olur. Bu nedenle eklenen yapı iç içe bir liste şeklinde görünür. Örneğin [1, 2].append([3, 4]) işlemi, [3, 4] listesini iki ayrı sayı olarak değil, tek bir liste öğesi olarak ekler.

extend() metodu ise verdiğin iterable yapının içindeki öğeleri tek tek alır ve dıştaki listeye ekler. Metinler de iterable olduğu için ["a"].extend("bc") işlemi, metindeki karakterleri ayrı öğeler olarak ekleyerek ["a", "b", "c"] sonucunu oluşturur.

Bir yapının tamamını tek öğe olarak korumak istiyorsan append(), yapının içindeki öğeleri dış listeye katmak istiyorsan extend() kullanılır. Bu ayrımı pekiştirmek için Python bilgi testini çözerek liste işlemleri konusundaki durumunu görebilirsin.

Aynı listeyle append() ve extend() çıktısını karşılaştır

Aynı listeyle append() ve extend() çıktısını karşılaştır

Aynı başlangıç listesinden iki farklı sonuç oluştuğunu görmek için listenin kopyaları üzerinde iki metodu ayrı ayrı çalıştıralım:

baslangic = [1, 2]

append_sonuc = baslangic.copy()
append_sonuc.append([3, 4])

extend_sonuc = baslangic.copy()
extend_sonuc.extend([3, 4])

print("append():", append_sonuc)
print("extend():", extend_sonuc)

Beklenen çıktı şöyledir:

append(): [1, 2, [3, 4]]
extend(): [1, 2, 3, 4]
  1. baslangic listesi önce [1, 2] değerini içerir.
  2. append([3, 4]), [3, 4] yapısının tamamını tek öğe olarak ekler. Bu nedenle son öğe, kendi içinde iki sayı bulunan ayrı bir listedir.
  3. extend([3, 4]), verilen listenin içindeki 3 ve 4 değerlerini dış listeye ayrı ayrı ekler.
İşlem Eklenen yapının yorumu Beklenen çıktı
append([3, 4]) [3, 4] tek bir liste öğesi olarak eklenir. [1, 2, [3, 4]]
extend([3, 4]) 3 ve 4 dış listeye ayrı öğeler olarak katılır. [1, 2, 3, 4]

Tek değer, liste ve metin eklerken hangi sonuç oluşur?

Tek değer, liste ve metin eklerken hangi sonuç oluşur?

append(), kendisine verilen değeri listenin sonuna tek bir öğe olarak ekler. extend() ise verilen iterable yapının içindeki öğeleri listenin sonuna ayrı ayrı ekler. Aynı başlangıç listesiyle üç durumu karşılaştıralım:

liste1 = ['Python']
liste1.append(3)
print(liste1)

liste2 = ['Python']
liste2.append([3, 4])
print(liste2)

liste3 = ['Python']
liste3.extend([3, 4])
print(liste3)

Beklenen çıktı:

['Python', 3]
['Python', [3, 4]]
['Python', 3, 4]

append(3) kullanımında 3 tek bir sayı ve tek bir öğe olarak eklenir. append([3, 4]) kullanımında ise [3, 4] listesinin tamamı tek bir öğe kabul edilir. Bu nedenle çıktıda iç içe liste görünür: dıştaki liste ['Python', ...], içteki liste ise [3, 4] bölümüdür.

extend([3, 4]) kullanıldığında Python, verilen listenin öğelerini sırayla alır ve dış listeye ekler. Böylece 3 ve 4 ayrı öğeler hâline gelir; iç içe liste oluşmaz.

Metinlerde de aynı kural geçerlidir. Metinler karakterleri üzerinde sırayla dolaşılabilen iterable yapılardır:

kelimeler = ['Python']
kelimeler.extend('kod')
print(kelimeler)

Beklenen çıktı:

['Python', 'k', 'o', 'd']

extend('kod') kullanıldığında metnin tamamı tek parça olarak değil, k, o ve d karakterleri ayrı öğeler olarak eklenir. Metnin tek öğe olarak kalmasını istiyorsan append('kod') kullanabilirsin. Bu durumda çıktı ['Python', 'kod'] olur.

Beklenen ve gerçek çıktı farklıysa nasıl teşhis edilir?

Çıktıyı teşhis ederken aşağıdaki sırayı izleyebilirsin:

  1. Metoda verilen argümanın tek bir değer mi, yoksa üzerinde dolaşılabilen bir iterable mı olduğunu belirle.
  2. Sonuç listesinde kaç yeni öğe oluştuğunu say. Bir değer eklendiyse tek öğe, bir listenin elemanları dağıtıldıysa birden fazla öğe görürsün.
  3. Çıktıda iç içe köşeli parantez olup olmadığını incele. ['Python', [3, 4]] görünümü, listenin append() ile tek öğe olarak eklendiğini gösterir.

[3, 4] yapısının tek öğe olarak kalması bekleniyorsa append([3, 4]), 3 ve 4 değerlerinin ayrı öğeler olması bekleniyorsa extend([3, 4]) seçilmelidir. Metin karakterlere ayrılmışsa metoda metin verildiğini ve extend() kullanıldığını düşünebilirsin. Metni tek parça korumak için append() tercih edilir.

Benzer örneklerde hangi metodun uygun olduğunu pekiştirmek için Python bilgi testini çözerek farklı liste işlemlerini deneyebilirsin.

append() mı extend() mi? Hızlı seçim kontrolü

append() ile extend() arasında seçim yaparken, eklenen verinin sonuç listesinde nasıl görünmesi gerektiğine bak. Veriyi tek bir öğe olarak korumak istiyorsan append(), bir iterable içindeki öğeleri ayrı ayrı eklemek istiyorsan extend() kullan.

  1. Eklenen şey tek bir öğe olarak mı kalmalı? Yanıt evetse append() kullanılır. Listeyi tek bir öğe olarak eklediğinde iç içe liste oluşur.
    liste = [1, 2]
    liste.append([3, 4])
    print(liste)

    Beklenen çıktı: [1, 2, [3, 4]]

  2. Bir iterable içindeki öğeler dış listeye ayrı ayrı mı eklenmeli? Yanıt evetse extend() kullanılır. Liste, içindeki öğeleri sırayla dış listeye ekler.
    liste = [1, 2]
    liste.extend([3, 4])
    print(liste)

    Beklenen çıktı: [1, 2, 3, 4]

  3. Eklenen değer bir metin mi? Metnin tamamı tek öğe olarak kalacaksa append(), karakterleri ayrı ayrı eklenecekse extend() seçilir.
    metin = "Python"
    
    tek_oge = []
    tek_oge.append(metin)
    
    karakterler = []
    karakterler.extend(metin)
    
    print(tek_oge)
    print(karakterler)

    Beklenen çıktı: ['Python'] ve ['P', 'y', 't', 'h', 'o', 'n']

Temel liste işlemlerini ve benzer Python konularını sistematik biçimde tekrar etmek istersen, ücretsiz Sıfırdan Temel Python video eğitimine göz atabilirsin.

Sık Sorulan Sorular

append([3, 4]) neden iç içe liste oluşturur?

append(), kendisine verilen değeri tek bir öğe olarak listenin sonuna ekler. Bu nedenle [3, 4] listesindeki değerleri ayırmaz ve listeyi tek parça olarak korur. Sonuç [1, 2, [3, 4]] biçiminde olur.

extend([3, 4]) ile listeye neden iki ayrı öğe eklenir?

extend(), verilen iterable içindeki öğeleri sırayla dolaşır ve her birini dış listeye ayrı bir öğe olarak ekler. Bu yüzden 3 ve 4 ayrı ayrı eklenerek [1, 2, 3, 4] sonucunu oluşturur.

extend() ile metin eklerken karakterler neden ayrı ayrı gelir?

Metinler, karakterleri üzerinde sırayla dolaşılabilen iterable değerlerdir. Bu nedenle extend("Python") ifadesi metni tek parça olarak değil, P, y, t, h, o ve n karakterlerini ayrı ayrı ekler.

Bir listeyi tek öğe olarak eklemek için append() mı, extend() mi kullanılmalı?

Bir listeyi tek öğe olarak korumak için append() kullanılmalıdır. extend() ise listenin içindeki öğeleri dış listeye ayrı ayrı ekler.

Kısacası, tek bir öğeyi korumak için append(), iterable içeriğini listeye yaymak için extend() tercih edilir.

Bu içerik aradığın cevabı verdi mi?
Yanıtın, hangi yazıları geliştirmemiz gerektiğini anlamamıza yardımcı olur.
Bu içeriğin üretilmesinde yapay zeka araçlarından destek alınmıştır.

Bu konudan sonra ne okuyabilirsin?

Tüm yazılar

İlgili Eğitimler

Berk Keskin, yazılım geliştirici ve eğitmen
Yazar

Berk Keskin Kimdir?

Yazılıma 12 yaşında başladı; İzmir Ekonomi Üniversitesi'ni bölüm birincisi ve yüksek şeref öğrencisi olarak tamamladı. Bugün yalnızca eğitim vermekle kalmıyor, sektörde aktif olarak yazılım projeleri geliştiriyor ve gerçek dünya deneyimini birebir derslerine taşıyor. Ezberden uzak, mühendislik zihniyetini merkeze alan sürdürülebilir öğrenme sistemleri tasarlayarak sorgulayan, üreten ve problem çözebilen yeni nesil yazılımcılar yetiştiriyor.

Sektörel Deneyim & Projeler

  • Ticarify Entegrasyon Yazılım logosu CEO Ticarify Entegrasyon YazılımPazaryerleri ve e-ticaret sitelerine otomatik e-fatura kesimi, sipariş ve kargo takibi hizmetleri sunan e-Dönüşüm platformunun API mimarisini ve yazılım ekibini yönetmektedir.
  • Benim Düğünüm logosu CEO Benim DüğünümDijital etkinlik ve anı paylaşım platformu.
  • Siberdizayn logosu Yazılım Ekibi Lideri SiberdizaynYüksek anlık oyuncu trafiğine sahip oyun kontrol panelleri ve sunucu altyapıları geliştiren yazılım ekibine liderlik etmektedir.
  • MEDYOGRAFYA 360° Dijital Çözümler logosu Dijital Strateji Lideri MEDYOGRAFYA 360° Dijital ÇözümlerŞirketlerin dijital çözümlerde uzun vadede nasıl ilerlemesi gerektiği ve dijital dönüşüm süreçlerinin yönetilmesine destek olmaktadır.
  • İzmir Ekonomi Üniversitesi logosu Danışma Kurulu Üyesi İzmir Ekonomi ÜniversitesiMezun olduğu üniversitesinde, Bilgisayar Programcılığı bölümünün akademik müfredatını güncel sektör ihtiyaçlarına göre şekillendirmek adına Danışma Kurulu'nda görev almaktadır.
WhatsApp Hemen Ara