Menu
Coddy logo textTech

Dizi nedir?

Dizi (array), aynı tipteki değerlerden oluşan bir koleksiyonu tek bir bitişik bellek bloğunda saklayan bir veri yapısıdır. Eleman denen her değere, indeks denen konum numarasıyla ulaşılır; indeks çoğu dilde 0'dan başlar.

Yazan Kevin Spektor, Kurucu ortak ve CTO

Güncellendi: 24 Eylül 2026

Haftanın sıcaklıklarını gösteren bir hava durumu uygulamasının yedi sayıya ihtiyacı vardır. monday, tuesday gibi yedi ayrı değişken kullanabilir, ama o zaman hiçbir döngü onların üzerinden geçemez ve sekizinci bir gün eklemek yeni kod yazmak demek olur. Dizi, yedi sayının hepsini tek bir ad altına, temperatures adına, 0'dan 6'ya numaralanmış yuvalara koyar.

Dizi nasıl çalışır

Dizi elemanlarını tek bir bellek bloğunda yan yana tutar ve her eleman aynı sayıda bayt kaplar. Bu yerleşim, bilgisayarın herhangi bir elemanı tek bir hesapla bulmasını sağlar:

address of element i = start address + i × element size

32 bitlik tam sayılardan (her biri 4 bayt) oluşan bir dizinin 1000 numaralı bellek adresinde başladığını varsay. 0. eleman 1000'de, 1. eleman 1004'te, 2. eleman 1008'de, 3. eleman da 1012'dedir. 3. elemana ya da 3.000.000. elemana ulaşmak aynı tek adımı alır; bir diziyi indeksle okumaya bu yüzden sabit zaman denir ve O(1) diye yazılır.

Python'un array modülü ham sayıları bu şekilde saklar, böylece hesabı kontrol edebilirsin:

4 bytes per element
16 bytes in total
scores[0] = 90 at address 1000
scores[1] = 75 at address 1004
scores[2] = 88 at address 1008
scores[3] = 62 at address 1012

Bu formül, çoğu dilin neden 0'dan saydığını da açıklar. İndeks bir uzaklıktır (offset): baştan kaç eleman atlanacağını söyler. İlk eleman başlangıçtan 0 eleman uzaktadır, bu yüzden indeksi 0'dır; n uzunluğundaki bir dizinin son elemanının indeksi ise n − 1'dir. Lua, MATLAB, R ve Fortran gibi birkaç dil saymaya 1'den başlar.

Python'da dizi kullanmak

Python kodunun çoğu dizi olarak yerleşik list tipini kullanır. Onu köşeli parantezlerle oluşturur, elemanları indeksle okur ve değiştirir, uzunluğunu da len() ile sorarsın:

18
25
19
5
[18, 22, 25, 23, 19, 20]

Negatif indeks sondan sayar, bu yüzden temperatures[-1] son elemandır. Bu kısayol Python'a özgüdür; C ve Java'da negatif indeks yoktur.

Dizi işlemlerinin maliyeti

Bitişik yerleşim bazı işlemleri hızlı, bazılarını yavaş yapar. Maliyet, eleman sayısı olan n ile büyür:

İşlemPython örneğiMaliyet
Bir elemanı indeksle okumak ya da değiştirmeka[3] = 7O(1), tek adım
Sona bir eleman eklemeka.append(7)Ortalamada O(1)
Başa eklemek ya da baştan silmeka.insert(0, 7)O(n), her eleman kayar
Sıralanmamış bir dizide bir değer aramak7 in aO(n), elemanları tek tek kontrol eder
Sıralı bir dizide bir değer aramakikili aramaO(log n)

Başa eklemek yavaştır, çünkü yer açmak için her elemanın bir yuva kayması gerekir. Sıralanmamış bir dizide arama yapmak, her elemana sırayla bakan bir doğrusal arama demektir; sıralı bir dizi ise her adımda kalan aralığı ikiye bölen ikili aramaya izin verir.

Bir dizide döngüyle gezinmek

Diziler ve döngüler birlikte gider: bir döngü her elemanı sırayla ziyaret eder, buna iterasyon denir. Aynı birkaç satır 5 elemanlı bir diziyi de 5 milyon elemanlı bir diziyi de işler.

Total: 28.5
Most expensive: 12.0

Diğer dillerde diziler

C'de bir dizinin boyutu tanımlandığında belirlenir ve sabittir; dizi tek tipte ham değerler tutar. sizeof boyutunu bayt cinsinden bildirir:

int scores[5] = {90, 75, 88, 62, 100};   /* 5 × 4 bytes = 20 bytes */

Java dizilerinin de uzunluğu sabittir ve yeni elemanlar, sayılar için 0 gibi varsayılan bir değerle başlar. Büyüyebilen bir Java dizisine ihtiyacın olduğunda ArrayList kullanırsın:

int[] scores = new int[5];   // five elements, all 0
scores[0] = 90;

JavaScript dizileri serbestçe büyüyüp küçülür ve [1, "two", true] gibi farklı tipleri karıştırabilir.

Python'un list, Java'nın ArrayList ve C++'ın std::vector tipleri gibi büyüyen dizilere dinamik dizi denir. Bunlar sonlarında fazladan yer ayırır. Bu yer bittiğinde daha büyük bir blok ayırır, her elemanı oraya kopyalar ve devam ederler. Kopyalamalar yeterince seyrek olduğu için sona ekleme ortalamada hızlı kalır.

Bir dizi başka dizileri de tutabilir. grid[row][col], oyun tahtaları, elektronik tablolar ve görüntüler için kullanılan iki boyutlu bir dizinin bir hücresini okur. C'de çok boyutlu diziler rehberi bunların bellekte nasıl durduğunu gösterir.

Sık yapılan hatalar

Bir fazla ya da bir eksik (off by one). 3 elemanlı bir dizinin indeksleri 0, 1 ve 2'dir, yani 3 numaralı indeks sonun ötesindedir. Python bir hatayla durur:

IndexError: list index out of range

Java bir ArrayIndexOutOfBoundsException fırlatır, JavaScript ise sessizce undefined döndürür. C hiç kontrol yapmaz: sonun ötesini okumak tanımsız davranıştır (undefined behavior); çöp bir değer döndürebilir ya da programı bir segmentation fault ile çökertebilir.

Atamayla kopyalamak. Python, Java ve JavaScript'te b = a bir diziyi kopyalamaz; iki ad da aynı diziyi gösterir, bu yüzden b değişince a da değişir. Gerçek bir kopya için Python'da a.copy(), JavaScript'te [...a] kullan. Nedenini değişken sayfası açıklar.

Sırada ne var

Bir dizi ancak üzerinden geçecek bir döngüyle işe yarar, bu yüzden sırada iterasyonun ne olduğunu oku; yukarıdaki eleman boyutlarının arkasındaki birim için de baytın ne olduğuna bak. Python listeleri rehberi dilimlemeyi, sıralamayı ve liste metotlarını anlatır; bağlı liste görselleştirmesi ise hızlı indekslemeyi hızlı eklemeyle takas eden yapıyı gösterir.

Sıkça Sorulan Sorular

Matematikte array ne anlama gelir?
İlkokul matematiğinde array, eşit satır ve sütunlara dizilmiş nesnelerden oluşan bir düzendir, örneğin 4'erli 3 sıra nokta. Çarpmayı göstermek için kullanılır: noktaları saymak 3 × 4 = 12 sonucunu verir. Programdaki iki boyutlu bir dizi de aynı resimdir, yalnızca her konumda bir değer vardır. Türkçede matematikteki "dizi" kelimesinin sayı dizisi (sequence) anlamına geldiğini unutma; programlamadaki diziyle aynı şey değildir.
Diziye bir örnek nedir?
Bir haftanın sıcaklıklarından oluşan [18, 21, 25, 23, 19, 17, 20] listesi yedi sayılık bir dizidir ve temperatures[0] pazartesinin değeridir. Gündelik başka örnekler, bir görüntünün bir satırındaki pikseller, bir string'in karakterleri ve bir oyunun skor tablosundaki puanlardır.
Dizi bir çocuğa nasıl anlatılır?
Onu bir yumurta kolisine benzet. Kolinin tek bir adı ve bir sırada sabit sayıda gözü vardır, her gözde de bir yumurta durur. Bir yumurtayı göz numarasıyla bulursun, programcılar da gözleri saymaya 0'dan başlar.
Bir dizinin içinde ne bulunur?
Bir dizi elemanları, yani içinde saklanan tek tek değerleri tutar; her biri kendi indeksindedir. C ve Java'da tüm elemanlar aynı tiptedir, örneğin hepsi int ya da hepsi double. Python listeleri ve JavaScript dizileri tipleri karıştırabilir, çünkü değerlerin kendisini değil, değerlere başvuruları saklarlar.
Dizi ile liste arasındaki fark nedir?
Dizi elemanlarını bellekte yan yana saklar, bu yüzden her elemana indeksle doğrudan ulaşılabilir. Bağlı liste (linked list) ise her elemanı ayrı saklar ve bir sonrakine bir işaretçi tutar, bu yüzden 1.000. elemana ulaşmak ilk 999 elemanın üzerinden geçmek demektir. Python'un yerleşik list tipi bağlı liste değildir: eleman ekledikçe büyüyen dinamik bir dizidir.
Coddy programming languages illustration

Coddy ile kodlamayı öğren

BAŞLA