Boyutlu Listeler

avatar

Bugün çok boyutlu listeler konusunda önemli gördüğüm noktalardan bahsedeceğim.


Source

Her ne kadar biz çok boyutlu ya da matris gibi ifadeler kullanmış olsak da bunlar bizim yaklaşımımızdır belirteyim. Yani Python yorumlayıcısı olaya böyle yaklaşmayacaktır. Bunlar bizim farazi kabullerimizdir.

Normalde Pythonda liste dediğimiz kavram diğer programlama dillerindeki dizi olarak geçen array lerden başka bir şey değil.

Ancak Python özgürlükçü yaklaşımını liste kavramı üzerinde de göstererek her şeyi yapabileceğiniz diziler ortaya çıkarmamıza imkan vermektedir.

Normalde diziler aynı tipteki verilerin peş peşe sıralandığı yapılar olsa da Python'da böylesi bir kısıtlama bulunmamaktadır. Yani biz bir dizinin elemanını hem string, hem tam sayı, hem float sayı, hem karakter, hem de başka bir dizi yapabiliriz.

Bu tiplerin hepsini tek bir dizide toplayabiliriz. Bu bilgi aklımızın bir köşesinde bulunsun.

Python'un getirdiği ikinci nokta ise boyut kısıtlamasının olmaması. Yani atıyorum 3x4, 6x6 gibi matrislerin olduğun düşünün. Bunlarda en üstteki satır kaç kolon ise alttakiler de öyle olmak zorunda. Ama Python da böylesi bir zorunluluk bulunmuyor.

Neyse bu kadar açıklamadan sonra biraz kod örnekleri üzerinden gidelim.

Böyle bir kodun çıktısı aşağıdaki gibidir :

Görüldüğü gibi oluşturmuş olduğumuz myList eleman olarak farklı listeleri alabiliyor.

Açık hallerini alabildiği gibi bir listenin ismini de alabilir. Ancak burada şunu belirtmek gerekiyor. Liste ismi ile eleman geçirdiğimizde geçen aslında bir liste değil o listenin pointerı olmaktadır.

Yani biz anyList de herhangi bir değişiklik yaptığımızda o değişiklik direk olarak myList e de yansıyacaktır.

Uygulamasını yapalım ki daha iyi anlaşılsın :

Kodun çıktısı aşağıdaki gibidir :

Görüldüğü gibi anyList de yapılan değişiklik anında myList de kendini gösterdiği. Bunun sebebi pointerı işaret ediyor olması. Buna programlama da shadow copy denilmektedir.

Neden çok boyut?

Dizilerde çok boyutun olması daha doğrusu bizim öyle bir kabulümüzün olmasının sebebi, anında birden fazla bilgiyi tutmak istememiz.

Örneğin bir şirketteki insanların isimlerini tuttunuz. Bu tek bir boyuttur. Ama bu insanların yaşlarını, maaşlarını ve mesleklerini de tutmaya karar verdiğinizde her özellik için bir boyut ayırmanız gerekecektir.

Örnek bir çok boyutlu dizi girelim :

bu kodun çıktısı aşağıdaki gibidir :

Görüldüğü gibi bizim aklımızda 3x2 olarak hayal ettiğimiz matris yapı aslında Python için öyle değil. Şimdi bu dizinin elemanlarına erişelim :

Çıktı :

Dizinin ilk elemanı her zaman 0 kabul edildiğiniz herkes biliyor artık. 0,1,2.. şeklinde giden bir sistem.

Bizim 2x3 matris yapımız olsa da aslında newList dizisinin eleman sayısı 3 dür. ve diğer elemanlar

newList[0][1]

şeklinde erişebiliriz.

Son olarak fonksiyonel programlamanın çok boyutlu bir dizi üzerinde kullanımını görüp yazıyı bitireyim :

Çıktı :

Çıktıda görüldüğü gibi satırlar sütun haline geldi. Anlama kısmını size bırakıyorum. Anlamazsanız anlatırım. Yazı çok uzadığı için burada bırakıyorum.



0
0
0.000
5 comments