Python Dilinde Arrays Kullanımı: Temelden İleri Seviyeye Kapsamlı Kılavuz
Python programlama dilinde, veri koleksiyonlarını depolamak için çeşitli yapılar bulunur. En yaygın kullanılanlardan biri list olsa da, özellikle sayısal verilerle çalışırken bellek verimliliği ve performans açısından array modülü önemli bir alternatif sunar. Bu makale, Python'ın array modülünü kullanarak tip-belirli dizilerin nasıl oluşturulduğunu, yönetildiğini ve günlük programlama görevlerinde nasıl kullanılabileceğini teknik detaylarıyla açıklamaktadır.
Sözdizimi
array modülünü kullanmak için öncelikle bu modülün içe aktarılması gerekmektedir. Dizi oluşturma işlemi, dizinin depolayacağı veri tipini belirten bir "tip kodu" ve başlangıç elemanlarını içeren bir iterable nesne ile gerçekleştirilir.
from array import array
dizi_adi = array('tip_kodu', [eleman1, eleman2, ...])Detaylı Açıklama
array modülünün temel yapısı iki ana bileşenden oluşur:
tip_kodu (Type Code): Bu tek karakterlik string, dizinin depolayacağı veri tipini belirtir. Her tip kodu, belirli bir C veri tipine karşılık gelir ve dizideki tüm elemanların bu tipte olmasını sağlar. Bu sayede bellek kullanımı optimize edilir. Yaygın kullanılan bazı tip kodları şunlardır:
'b': İşaretli küçük tam sayı (signed char)'B': İşaretsiz küçük tam sayı (unsigned char)'h': İşaretli kısa tam sayı (signed short)'H': İşaretsiz kısa tam sayı (unsigned short)'i': İşaretli tam sayı (signed int)'I': İşaretsiz tam sayı (unsigned int)'l': İşaretli uzun tam sayı (signed long)'L': İşaretsiz uzun tam sayı (unsigned long)'q': İşaretli uzun uzun tam sayı (signed long long) (Sadece belirli sistemlerde mevcuttur)'Q': İşaretsiz uzun uzun tam sayı (unsigned long long) (Sadece belirli sistemlerde mevcuttur)'f': Kayan nokta (float)'d': Çift hassasiyetli kayan nokta (double)
iterable: Bu, dizinin başlangıç elemanlarını içeren bir koleksiyondur. Genellikle bir
listkullanılır, ancaktupleveya başka bir iterable nesne de olabilir. Dizi oluşturulurken bu iterable içindeki elemanlar belirtilentip_kodu'na dönüştürülür. Eğer eleman tipi,tip_koduile uyumlu değilseTypeErrorhatası alınır.
Pratik Kullanım Örnekleri
Aşağıdaki örnekler, Python array modülünün farklı senaryolarda nasıl kullanılabileceğini göstermektedir.
1. Temel Dizi Oluşturma ve Elemanlara Erişim
'i' tip kodu ile işaretli tam sayılardan oluşan bir dizi oluşturalım ve elemanlarına erişelim.
from array import array
# 'i' tip kodlu (işaretli tam sayı) bir dizi oluşturma
int_array = array('i', [1, 2, 3, 4, 5])
print("Oluşturulan Dizi:", int_array)
print("Dizinin Boyutu:", len(int_array))
# İndeks kullanarak elemanlara erişim
print("İlk Eleman:", int_array[0])
print("Son Eleman:", int_array[-1])
# Elemanı güncelleme
int_array[2] = 10
print("Güncellenmiş Dizi:", int_array)2. Farklı Veri Tipleriyle Çalışma
Kayan noktalı sayılar için 'f' tip kodunu kullanarak bir dizi oluşturalım.
from array import array
# 'f' tip kodlu (float) bir dizi oluşturma
float_array = array('f', [1.0, 2.5, 3.7, 4.2])
print("Float Dizi:", float_array)
# Eleman ekleme
float_array.append(5.9)
print("append() sonrası:", float_array)
# Eleman kaldırma
float_array.remove(2.5) # Değere göre kaldırır
print("remove() sonrası:", float_array)
# Yeni bir dizi ile genişletme
another_float_array = array('f', [6.1, 7.3])
float_array.extend(another_float_array)
print("extend() sonrası:", float_array)3. Dosyadan Veri Okuma/Yazma
array nesneleri, özellikle büyük ikili veri setleriyle çalışırken doğrudan dosya işlemleri için de kullanılabilir.
from array import array
import os
# Bir dizi oluştur
data = array('i', [10, 20, 30, 40, 50])
file_name = "array_data.bin"
# Diziyi ikili dosyaya yazma
with open(file_name, 'wb') as f:
    data.tofile(f)
print(f"Dizi '{file_name}' dosyasına yazıldı.")
# Dosyadan geri okuma
read_data = array('i') # Boş bir dizi oluştur
with open(file_name, 'rb') as f:
    read_data.fromfile(f, len(data)) # Orijinal boyutu kadar oku
print("Dosyadan okunan dizi:", read_data)
# Dosyayı temizle
os.remove(file_name)
print(f"'{file_name}' dosyası silindi.")Önemli Notlar ve İpuçları
Bellek Verimliliği:
array.array,listnesnelerine göre daha az bellek kullanır çünkü tüm elemanları aynı tipte tutar ve bu elemanlar arka planda kompakt bir C dizisi olarak depolanır. Büyük sayısal veri setleriyle çalışırken bu önemlidir.Tip Kısıtlaması:
arraynesneleri yalnızca belirtilentip_kodu'na uygun verileri depolayabilir. Farklı tiplerde eleman eklemeye çalışmakTypeErrorhatasına yol açar. Bu,list'in esnekliğine kıyasla bir kısıtlamadır.Performans: Tip-belirli olması ve doğrudan bellek erişimine izin vermesi nedeniyle, özellikle sayısal işlemler ve dosya G/Ç (I/O) operasyonlarında
arraynesnelerilist'lere göre daha hızlı performans sergileyebilir.listile Farkı: Python'dalist, farklı veri tiplerini aynı anda barındırabilen genel amaçlı, dinamik bir dizi gibidir.array.arrayise belirli bir veri tipine sıkı sıkıya bağlıdır ve genellikle büyük, homojen sayısal veri koleksiyonları için tercih edilir. Eğer esnekliğe ihtiyacınız varsalistkullanın; bellek ve performans kritikse ve verileriniz homojensearraydüşünün.Modül İçe Aktarma:
arraymodülü standart kütüphanenin bir parçasıdır ve ek kurulum gerektirmez. Kullanmadan öncefrom array import arrayveyaimport arrayşeklinde içe aktarmalısınız.Diğer Operasyonlar:
arraynesneleri,append(),extend(),insert(),pop(),remove()gibilist'e benzer birçok yöntemi destekler. Ayrıcatofile(),fromfile(),tobytes(),frombytes()gibi ikili dosya ve bayt işlemleri için özel yöntemleri de vardır.
        
                
            
            
Yorum yap
Yorumlar