Python'da Diziler (Arrays): Ayrıntılı Anlatım
Python'da "dizi" (array) kavramı birkaç farklı şekilde karşımıza çıkar. Python'un temelinde liste (list) yapısı bulunurken, daha performanslı işlemler için array modülü ve NumPy kütüphanesi gibi seçenekler de mevcuttur.
1. Python Listeleri (Temel Dizi Yapısı)
Python'da en temel dizi benzeri yapı listelerdir:
# Liste oluşturma meyveler = ["elma", "armut", "çilek", "muz"] sayilar = [1, 2, 3, 4, 5] karisik = [1, "elma", 3.14, True] # Elemanlara erişim print(meyveler[0]) # 'elma' (indisler 0'dan başlar) print(meyveler[-1]) # 'muz' (son eleman) # Dilimleme (slicing) print(sayilar[1:3]) # [2, 3] print(sayilar[:3]) # [1, 2, 3] print(sayilar[2:]) # [3, 4, 5] # Liste uzunluğu print(len(meyveler)) # 4
Liste Metodları:
# Eleman ekleme meyveler.append("kiraz") # Sona ekler meyveler.insert(1, "portakal") # Belirtilen pozisyona ekler # Eleman silme meyveler.remove("armut") # Değere göre siler silinen = meyveler.pop(2) # İndise göre siler ve döndürür del meyveler[0] # İndise göre siler # Diğer işlemler meyveler.sort() # Sıralama meyveler.reverse() # Ters çevirme yeni_liste = meyveler.copy() # Kopyalama
2. Array Modülü
Python'un built-in array modülü, daha verimli bellek kullanımı sağlar ancak tek tip veri saklayabilir:
from array import array # array(typecode, initial_values) sayilar = array('i', [1, 2, 3, 4, 5]) # 'i' signed integer demektir kesirli = array('d', [1.0, 2.5, 3.14]) # 'd' double precision float # Kullanımı liste gibidir sayilar.append(6) print(sayilar[3]) # 4
Typecode'lar:
'b': signed char
'B': unsigned char
'i': signed int
'I': unsigned int
'f': float
'd': double
3. NumPy Dizileri (Bilimsel Hesaplamalar İçin)
NumPy, büyük veri setleri ve bilimsel hesaplamalar için optimize edilmiş diziler sunar:
import numpy as np # NumPy dizisi oluşturma arr = np.array([1, 2, 3, 4, 5]) matris = np.array([[1, 2, 3], [4, 5, 6]]) # Özellikler print(arr.shape) # (5,) - boyut bilgisi print(matris.shape) # (2, 3) print(arr.dtype) # int64 - veri tipi # Özel diziler sifir_dizi = np.zeros((3, 4)) # 3x4'lük 0'lardan oluşan dizi bir_dizi = np.ones((2, 2)) # 2x2'lik 1'lerden oluşan dizi aralik = np.arange(0, 10, 2) # 0'dan 10'a 2'şer artan dizi [0, 2, 4, 6, 8]
NumPy Avantajları:
Vektörel işlemler (broadcasting)
Hızlı matematiksel fonksiyonlar
Matris işlemleri
Bellek verimliliği
4. Çok Boyutlu Diziler
Python'da iç içe listelerle çok boyutlu diziler oluşturulabilir:
# 2 boyutlu dizi (matris) matris = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ] print(matris[1][2]) # 6 (2. satır, 3. sütun) # 3 boyutlu dizi kup = [ [ [1, 2], [3, 4] ], [ [5, 6], [7, 8] ] ] print(kup[1][0][1]) # 6
5. Dizi İşlemleri ve Fonksiyonlar
List Comprehension:
kareler = [x**2 for x in range(10)] # [0, 1, 4, 9, ..., 81] ciftler = [x for x in range(20) if x % 2 == 0]
Map ve Filter:
def kare_al(x): return x * x sayilar = [1, 2, 3, 4] kare_liste = list(map(kare_al, sayilar)) # [1, 4, 9, 16] cift_sayilar = list(filter(lambda x: x % 2 == 0, sayilar)) # [2, 4]
Zip:
isimler = ["Ali", "Veli", "Ayşe"] yaslar = [25, 30, 22] for isim, yas in zip(isimler, yaslar): print(f"{isim}: {yas} yaşında")
6. Performans Karşılaştırması
Listeler: En esnek yapı, farklı türler saklayabilir, ancak görece yavaş
array modülü: Tek tip veri için daha verimli, özellikle sayısal işlemlerde
NumPy: Büyük veri setleri ve bilimsel hesaplamalar için en hızlı seçenek
7. Hangi Durumda Ne Kullanılmalı?
Liste: Genel amaçlı kullanım, farklı veri türleri içeren koleksiyonlar
array: Tek tip veri (özellikle sayısal) ve bellek verimliliği gerektiğinde
NumPy array: Bilimsel hesaplamalar, matris işlemleri, büyük veri setleri
Bu anlatım Python'daki dizi kavramlarını temel ve orta düzeyde kapsamaktadır. Özellikle NumPy gibi kütüphaneler çok daha geniş fonksiyonellik sunar.
Hiç yorum yok:
Yorum Gönder