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.
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:
| İşlem | Python örneği | Maliyet |
|---|---|---|
| Bir elemanı indeksle okumak ya da değiştirmek | a[3] = 7 | O(1), tek adım |
| Sona bir eleman eklemek | a.append(7) | Ortalamada O(1) |
| Başa eklemek ya da baştan silmek | a.insert(0, 7) | O(n), her eleman kayar |
| Sıralanmamış bir dizide bir değer aramak | 7 in a | O(n), elemanları tek tek kontrol eder |
| Sıralı bir dizide bir değer aramak | ikili arama | O(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?
Diziye bir örnek nedir?
[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?
Bir dizinin içinde ne bulunur?
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?
list tipi bağlı liste değildir: eleman ekledikçe büyüyen dinamik bir dizidir.