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ı 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]
baslangiclistesi önce[1, 2]değerini içerir.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.extend([3, 4]), verilen listenin içindeki3ve4değ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?

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:
- Metoda verilen argümanın tek bir değer mi, yoksa üzerinde dolaşılabilen bir iterable mı olduğunu belirle.
- 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.
- Çıktıda iç içe köşeli parantez olup olmadığını incele.
['Python', [3, 4]]görünümü, listeninappend()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.
- 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]] - 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] - Eklenen değer bir metin mi? Metnin tamamı tek öğe olarak kalacaksa
append(), karakterleri ayrı ayrı eklenecekseextend()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.