Python Dizilerine Eleman Ekleme
Bu rehberde ne öğreneceksiniz?
Bu rehberde, Python’daki dizi (array) yapısına eleman eklemenin farklı yollarını göreceksiniz.
Python’da yerleşik bir dizi tipi olmasa da, array modülü ve NumPy kütüphanesiyle tek veya çok boyutlu dizilerde:
- Tekil eleman ekleme (
append()) - Çoklu eleman ekleme (
extend()) - Belirli konuma ekleme (
insert()) işlemlerini adım adım uygulayabileceksiniz.
1. Python Dizi Kavramı
Python’un yerleşik List yapısı esnektir, fakat büyük sayısal verilerde array veya NumPy daha verimlidir.
arrayModülü: Tek tip (int, float) veriler için basit ve hızlı.- NumPy Modülü: Bilimsel işlemler, matris hesaplamaları ve çok boyutlu diziler için optimize edilmiştir.
💡 Not: Dizilere yalnızca aynı veri tipinde elemanlar eklenebilir.
2. array Modülü ile Eleman Ekleme
array modülünde, diziyi doğrudan değiştiren üç temel yöntem vardır.
a. İki Diziyi Birleştirme (+ Operatörü)
import array
arr1 = array.array('i', [10, 20, 30])
arr2 = array.array('i', [40, 50, 60])
arr3 = arr1 + arr2
print("Birleşmiş dizi:", arr3)
Bu örnek, iki diziyi + operatörüyle birleştirir.
Çıktı:
array('i', [10, 20, 30, 40, 50, 60])
b. Sona Tek Eleman Ekleme – append()
import array
arr1 = array.array('i', [1, 2, 3])
arr1.append(4)
print(arr1)
append() dizinin sonuna tek bir eleman ekler.
Çıktı:
array('i', [1, 2, 3, 4])
c. Sona Çoklu Eleman Ekleme – extend()
import array
arr1 = array.array('i', [1, 2, 3])
arr1.extend([4, 5, 6])
print(arr1)
extend() birden fazla elemanı dizinin sonuna ekler.
Çıktı:
array('i', [1, 2, 3, 4, 5, 6])
d. Belirli İndekse Ekleme – insert(i, x)
import array
arr1 = array.array('i', [1, 2, 3])
arr1.insert(0, 10)
print(arr1)
insert() belirtilen konuma eleman ekler.
Çıktı:
array('i', [10, 1, 2, 3])
💡 append() vs extend() Farkı
arr = [1, 2, 3]
arr.append([4, 5])
# [1, 2, 3, [4, 5]]
arr.extend([4, 5])
# [1, 2, 3, 4, 5]
append() tek bir nesneyi ekler (listeyi tek eleman olarak alır). extend() ise listenin tüm elemanlarını tek tek ekler.
3. NumPy Dizilerine Eleman Ekleme
NumPy dizileri, performans için sabit boyutludur. Bu nedenle append() veya insert() işlemleri orijinal diziyi değiştirmez, yeni bir dizi döndürür.
NumPy kurulu değilse:
pip install numpy
a. numpy.append() kodu
import numpy as np
np_arr1 = np.array([[1, 2], [3, 4]])
np_arr2 = np.array([[10, 20], [30, 40]])
# Axis belirtilmezse düzleştirir
flat = np.append(np_arr1, np_arr2, axis=None)
# Satır ekleme
rows = np.append(np_arr1, np_arr2, axis=0)
# Sütun ekleme
cols = np.append(np_arr1, np_arr2, axis=1)
append() satır (axis=0) veya sütun (axis=1) bazlı ekleme yapar.
b. numpy.insert() kodu
import numpy as np
np_arr1 = np.array([[1, 2], [4, 5]])
np_arr2 = np.array([[10, 20], [30, 40]])
# Satır ekleme
insert_row = np.insert(np_arr1, 1, np_arr2, axis=0)
# Sütun ekleme
insert_col = np.insert(np_arr1, 1, np_arr2, axis=1)
insert() belirtilen eksende (axis) ekleme yapar.
4. Performans Özeti
| Metot | Açıklama | Ortalama Karmaşıklık | Not |
|---|---|---|---|
append() | Tek eleman ekler. | O(1) | En hızlı yöntem |
extend() | Çoklu eleman ekler. | O(k) | k: eklenen eleman sayısı |
insert() | Belirli konuma ekler. | O(n) | n: dizi boyu |
numpy.append() | Yeni dizi döndürür. | O(n) | Hafif kopyalama işlemi yapar |
numpy.insert() | Eksene göre ekleme yapar. | O(n) | Kopyalama maliyeti vardır |
🧠 Big-O Açıklaması:
- O(1): Sabit süreli işlem.
- O(n): Dizi boyu arttıkça işlem süresi uzar.
Sıkça Sorulan Sorular (SSS)
array ile list farkı nedir? list farklı veri tiplerini tutabilir, array ise yalnızca tek tip sayısal verileri tutar ve belleği daha verimli kullanır.
NumPy neden orijinal diziyi değiştirmiyor? Çünkü NumPy dizileri sabit boyutludur. Eklediğinizde yeni bir kopya oluşturur.
append() ile extend() farkı nedir? append() bir nesneyi ekler, extend() ise içeriğini tek tek ekler.
Hangi yöntem daha hızlıdır? Sonuna append() veya extend() ile ekleme en hızlı olandır. Başına insert() ile ekleme en yavaştır.
🎯 Sonuç
Python’da dizi manipülasyonu, kullanılan yapıya göre değişir. Performans farklarını, veri tipi kısıtlarını ve metod davranışlarını bilmek hem hız hem de hata yönetimi açısından kritiktir.
Veri analizi ve bilimsel hesaplamalarınızı Rabisu Bulut platformunda hızlandırın. Yüksek performanslı sunucu örnekleri (instance) ile NumPy işlemlerini anında test edin 🚀