Python ile Dizi İçerisindeki Bir Sayıyı Dizinin Sonuna Taşıma
Python kullanarak örnek algoritma sorularını çözdüğümüz serimizin on beşinci sorusuna geçelim:
- Bir dizi içerisindeki sıfır değerlerini dizinin sonuna taşıyan bir fonksiyon yazın. Diğer elemanların sıralaması değişmemelidir.:
- Örnek girdi: [0, 1, 0, 3, 12]
- Örnek çıktı: [1, 3, 12, 0, 0]
def sifirlari_sona_tasi(dizi):
sifir_olmayan = 0
for i in range(len(dizi)):
if dizi[i] != 0:
dizi[sifir_olmayan], dizi[i] = dizi[i], dizi[sifir_olmayan]
sifir_olmayan += 1
return dizi
# Örnek kullanım:
giris_dizi = [0, 1, 0, 3, 12]
cikis = sifirlari_sona_tasi(giris_dizi)
print("Sıfırlar Sona Taşındı:", cikis) # [1, 3, 12, 0, 0]
Yukarıdaki örneğimizde, verilen bir dizideki tüm sıfır değerlerini dizinin sonuna taşıyan bir fonksiyonu tanımladık. Fonksiyonumuz sifirlari_sona_tasi
, sıfır olmayan tüm elemanları dizinin başına taşırken, sıfırları sona taşımaktır. Bu işlemi gerçekleştirmek için Python’daki birkaç temel programlama özelliğini kullandık.
Öncelikle, fonksiyonun içinde bir for döngüsü kullanılmıştır. Bu döngü, verilen dizinin tüm elemanlarını sırasıyla incelemek için kullanılır. Python’daki for
döngüsü, dizinin her bir elemanına kolayca erişim sağlar ve dizinin uzunluğuna bağlı olarak otomatik olarak tekrar eder. Bu durumda, for i in range(len(dizi))
ifadesi, dizinin başından sonuna kadar her bir indeks için döngünün tekrarlanmasını sağlar.
Döngü içerisinde, if ifadesi kullanılarak her elemanın sıfır olup olmadığı kontrol edilir. Eğer eleman sıfır değilse, yani if dizi[i] != 0:
koşulu sağlanıyorsa, bu elemanın dizideki konumu değiştirilir. Bu koşulun kullanılması, fonksiyonun sadece sıfır olmayan elemanlar üzerinde işlem yapmasını sağlar ve bu sayede sıfır olan elemanlar doğrudan sona taşınmış olur.
Elemanların yerlerinin değiştirilmesi (swap
) işlemi, Python’un çoklu atama özelliği kullanılarak yapılır: dizi[sifir_olmayan], dizi[i] = dizi[i], dizi[sifir_olmayan]
. Bu satır, sıfır olmayan elemanı (dizi[i]
) sifir_olmayan
indeksine taşırken, o indeksteki elemanı (dizi[sifir_olmayan]
) şu anki elemanın yerine koyar.
Her bir sıfır olmayan eleman taşındığında, sifir_olmayan
sayaç değişkeni bir arttırılır (sifir_olmayan += 1
). Bu sayede, sonraki sıfır olmayan eleman için dizide yer açılır. Sayaç değişkeni, sıfır olmayan elemanların dizideki yeni konumlarını takip etmek için kullanılır.
Sonuç olarak, fonksiyon dizinin tamamını taradıktan sonra, tüm sıfır değerlerini dizinin sonuna taşımış olur. Örnek kullanım, fonksiyonun nasıl çalıştığını göstermektedir: [0, 1, 0, 3, 12]
giriş dizisi [1, 3, 12, 0, 0]
olarak dönüştürülür, burada tüm sıfırlar sona taşınmış ve sıfır olmayan elemanlar korunmuştur. Bu yöntem, özellikle veri işleme ve sayısal hesaplamalarda önemli olabilir, çünkü sıfırları ayrıştırmak, bazı algoritmaların verimliliğini artırabilir.