Python Programming

Python’da Liste ve Dizi Ön Ayırma Optimizasyonu

Spread the love

Python listeleri dinamik olarak boyut değiştirir, ancak önceden bellek ayırma, özellikle büyük veri kümeleriyle performansı artırabilir. Bu makale, listeler ve diğer ardışık veri yapıları için verimli ön atama tekniklerini ele almaktadır.

İçerik Tablosu

Python Listelerinde Ön Atama

Python bazı diğer diller gibi önceden boyutlandırılmış listeleri doğrudan desteklemese de, liste kavramaları veya * operatörü kullanılarak verimli bir şekilde oluşturabiliriz.

Yöntem 1: Liste Kavraması

Tekrar eden bir değerle doldurulmuş belirli boyutta listeler oluşturmak için idealdir:


size = 10
my_list = [0] * size  # 10 sıfırdan oluşan liste
print(my_list)  # Çıktı: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

my_list = [None] * size # 10 None değerinden oluşan liste
print(my_list) # Çıktı: [None, None, None, None, None, None, None, None, None, None]

Yöntem 2: Bir Üreticiyle list() Kullanımı

Her öğenin benzersiz bir değer gerektirdiği daha karmaşık başlatma işlemleri için esneklik sağlar:


size = 5
my_list = list(range(size))  # [0, 1, 2, 3, 4] oluşturur
print(my_list)

my_list = list(i**2 for i in range(size))  # [0, 1, 4, 9, 16] oluşturur
print(my_list)

Önemli Not: Ön atama, boyutlandırmayı en aza indirerek öncelikle ilk doldurmayı optimize eder. Başlangıç boyutunun ötesine eklemeler yine de dinamik boyutlandırmayı tetikler.

NumPy Dizilerinde Ön Atama

NumPy dizileri sayısal hesaplama ve büyük veri kümeleriyle mükemmel bir şekilde çalışır. Doğrudan boyut ve veri tipi belirlemesine izin verirler:


import numpy as np

size = 10
my_array = np.zeros(size, dtype=int)  # 10 sıfırdan oluşan dizi (tamsayılar)
print(my_array)

my_array = np.empty(size, dtype=float)  # 10 başlatılmamış kayan noktalı sayıdan oluşan dizi (dikkatli kullanın!)
print(my_array)

my_array = np.arange(size)  # [0, 1, 2, ..., 9] dizisi
print(my_array)

NumPy, farklı başlangıç değerleri ve veri tipleriyle dizi oluşturmak için çeşitli fonksiyonlar sunarak sayısal işlem verimliliğini önemli ölçüde artırır.

array.array ile Ön Atama

array.array modülü, veri tipi belirtimi gerektiren homojen veriler için kompakt depolama sağlar:


import array

size = 5
my_array = array.array('i', [0] * size)  # 0 olarak başlatılmış 5 tamsayıdan oluşan dizi
print(my_array)

'i' işaretli tamsayı tipini belirtir; diğer tip kodları için belgelere bakın.

Doğru Veri Yapısının Seçilmesi

En iyi seçim (liste, NumPy dizisi, array.array), uygulamanıza ve verilerinize bağlıdır. Performans avantajları nedeniyle NumPy dizileri genellikle sayısal hesaplama için tercih edilir. Basit, homojen veriler için array.array, listelerden daha verimli olabilir. Python listeleri, dinamik boyutlandırma özelliğine rağmen, karma veri tiplerine sahip genel amaçlı kullanım için çok yönlü kalır.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir